Posts Tagged ‘ Source ’

 
Tuesday, May 27th, 2008

UPDATE: http://www.flashfuck.it/fps-monitor/

Here’s some (usefull i hope :) ) source..

fpsmonitor.png

I’ve made a little fps monitor for my projects (for both as3 and flex)… so, here’s some souce and some howtos about…

There are 2 classes, FPSMonitor is made for as3 (or flash) projects, the other one, FlexFPSMonitor is made expecially for use in Flex.

Usage AS3:

import it.flashfuck.debugger.FPSMonitor;
//[...]
addChild(new FPSMonitor());

Usage Flex:

// new xmlns in application tag
xmlns:debugger="it.flashfuck.debugger.*"
//then add the tag, remember to add it at the end of your app so it's appearing in front of everything

quite simple hm? :D
The main difference between these classes’ results is dragging. Flex one is draggable over the application stage, the other one is not draggable (just edit the code if you want to bring it away among the screen :) )….

Features
FPSMonitor (as the flex one) is monitoring
- OS, Player type, version, and “is debugger”
- FPS
- Memory usage (note: this parameter tells you the memory usage by ALL flash player instances you’re running, so if you’re running more than 1 player at once this value is altered!…even in 2 firefox tabs or a standalone and a browser player)

Graph:
FPSMonitor is displaying in a graph 2 values: FPS (white) and memory usage (black) (same note for this value :) )
Everything is blended with BlendMode.INVERT so you can see the monitor in quite every condition.

I hope you enjoy.
Download here both classes FPSMonitor.as and FlexFPSMonitor.as

….just a note: feel free to use this code anywhere, if you’re improving functionalities, adding more features or anything else please just send me a smoke signal or a pidgeon with a message so i can update the source :)

 
Sunday, April 6th, 2008

Domani inizia la prima 360 Conference europea, l’eccitazione è alle stelle…Stasera ci sarà il ricevimento degli speakers in quel di Milano, finalmente stringerò la mano a Tom e John…e da domani YEAH, 3 giornate ricche di sessions!Ricordo che la prima giornata (domani, lunedì 7) è GRATUITA, mentre la sera ci sarà un “evento nell’evento” aperto a tutti organizzato da Actionscript.it in cui si discuteranno i temi caldi della giornata :)
Vi lascio con questo esempio in papervision e vi aspetto alla mia session martedì :D

Questo il codice sorgente:

package{
	import flash.display.BlendMode;
	import flash.display.Sprite;
	import flash.events.AsyncErrorEvent;
	import flash.events.Event;
	import flash.events.NetStatusEvent;
	import flash.events.SecurityErrorEvent;
	import flash.geom.ColorTransform;
	import flash.media.Video;
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.core.effects.BitmapFireEffect;
	import org.papervision3d.core.effects.utils.BitmapDrawCommand;
	import org.papervision3d.core.geom.renderables.Vertex3D;
	import org.papervision3d.core.layers.BitmapEffectLayer;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.VideoStreamMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;
	[SWF(width="400",height="400",frameRate="24",backgroundColor="0x111111")]
	public class Flag3D extends Sprite	{
		[Embed (source="assets/360.png")] private var FlagAsset:Class;
		private var _scene:Scene3D;
		private var _cam:Camera3D;
		private var _view:Viewport3D;
		private var _render:BasicRenderEngine;
		private var _bfx:BitmapEffectLayer;
		private var _p:Plane;
		private var _bgp:Plane;
		private var _sine:Number=0;
		private var _srcs:Array = [
		//"http://www.youtube.com/get_video?video_id=Qk1qSpM63u4&t=OEgsToPDskIHja8NsMXSksfwHJKkwY2t",
		"http://www.flashfuck.it/360/get_video.flv"
		];
		private var _conn:NetConnection;
		private var _video:Video;
		private var _stream:NetStream;

		public function Flag3D()
		{
			super();
			stage.scaleMode = "noScale";
			stage.align = "TL";
			initVideo();
			init3D();
		}

		private function initVideo():void
		{
			_video = new Video(320,240);
			connection();
			trace("init video")
		}

		private function init3D():void
		{
			trace("init 3d")
			_view = new Viewport3D(0,0,true,true,true,true);
			_view.addEventListener(Event.ADDED_TO_STAGE,onViewPortReady);
			_cam = new Camera3D();
			_cam.focus=100;
			_cam.zoom=11;
			_cam.z=-1000;
			_scene = new Scene3D();
			_render = new BasicRenderEngine();
			addChild(_view);
		}

		private function onViewPortReady(e:Event):void
		{
			addElements();
			setupEffects();
		}

		private function setupEffects():void
		{
			_bfx = new BitmapEffectLayer(_view.width,_view.height);
			_bfx.addEffect( new BitmapFireEffect(1,1,1,1) );
			_bfx.drawCommand = new BitmapDrawCommand(null,new ColorTransform(1,1,1,1),BlendMode.HARDLIGHT,true);
			_bfx.drawLayer.blendMode = BlendMode.OVERLAY;
			_view.addRenderLayer(_bfx);
			_p.material.renderLayer = _bfx;
		}

		private function addElements():void
		{
			trace("add plane");
			_p = createFlag();
			_scene.addChild(_p);
			_bgp = createBG();
			_scene.addChild(_bgp);
			startRendering();
		}

		public function startRendering():void
		{
			this.addEventListener(Event.ENTER_FRAME,render);
		}

		public function stopRendering():void
		{
			this.removeEventListener(Event.ENTER_FRAME,render);
		}

		private function createFlag():Plane
		{
			trace("plane");
			var p:Plane = new Plane(createBitmapMaterial(),200,200,5,5);
			return p;
		}

		private function createBG():Plane
		{
			trace("plane");
			var p:Plane = new Plane(createVideoMaterial(),3200,2400,5,5);
			p.z = 1800;
			return p;
		}

		private function createBitmapMaterial():BitmapMaterial
		{
			var m:BitmapMaterial = new BitmapMaterial(new FlagAsset().bitmapData);
			m.doubleSided=true;
			m.smooth=true;
			return m;
		}

		private function createVideoMaterial():VideoStreamMaterial
		{
			var m:VideoStreamMaterial = new VideoStreamMaterial(_video,_stream);
			m.smooth=true;
			m.doubleSided=true;
			return m;
		}

		private function render(e:Event=null):void
		{
			_cam.hover(1,_view.containerSprite.mouseX/400,_view.containerSprite.mouseY/400);
			_p.yaw(.2);
			_render.renderScene(_scene,_cam,_view);
			_sine++;
			tweenPlaneMesh();
		}

		private function tweenPlaneMesh():void
		{
			var _deltaZ:Number= 30;
			var count:int=0;
			//plane waving:)
			for each(var v:Vertex3D in _p.geometry.vertices){
				var _vz:Number = Math.sin((count+_sine)/10)*_deltaZ;
				v.z = _vz;
				count++;
			}
		}
		private function connection():void
		{
			_conn = new NetConnection();
			_conn.addEventListener(NetStatusEvent.NET_STATUS,netHandler);
			_conn.addEventListener(SecurityErrorEvent.SECURITY_ERROR,crossdomainHandler);
			_conn.connect(null);
		}
		private function netHandler(e:NetStatusEvent):void
		{
			switch(e.info.code){
			case "NetConnection.Connect.Success":
                    startVideo();
                break;
                case "NetStream.Play.StreamNotFound":
                    trace("404!");
           		break;
			}
		}

		private function crossdomainHandler(e:SecurityErrorEvent):void
		{
			trace("security error: "+e);
		}

		private function startVideo():void
		{
			_stream = createStream();
			_video.attachNetStream(_stream);
			_stream.play(_srcs[0]);
		}

		private function createStream():NetStream
		{
			var stream:NetStream = new NetStream(_conn);
			stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,manageAsync);
			stream.addEventListener(NetStatusEvent.NET_STATUS,netHandler);
			return stream;
		}

		private function manageAsync(e:AsyncErrorEvent):void
		{
			//nada de nada :D
		}
	}
}

Download Source

Questo è uno “microtutorial” piuttosto semplice sulle maschere (sono 2 linee di codice -.-) che però ho notato non essere troppo conosciuto.

Come creare un effetto “pila” o “occhio di bue”? o pi√π banalmente, come creare una maschera sfumata con flash8 o superiori?

  1. crea un movieclip da mascherare
  2. crea un altro movieclip contenente una forma con riempimento a gradiente nel quale almeno un colore abbia alpha minore di 100
  3. posiziona nello stage (fisicamente o via actionscript) i due clip: il mascherato e la maschera
  4. via actionscript imposta a true la proprietà “cacheAsBitmap” di ciascun movieclip
  5. sempre via actionscript imposta la maschera del movieclip da mascherare (setMask in AS2 o mask in AS3)

ecco il risultato:
[flash http://www.flashfuck.it/wp-content/uploads/2008/01/maschere_sfumate1.swf w=400 h=200]

questo il fla dell’esempio (CS3) Download Source

 
Saturday, December 8th, 2007

Il buon Tink, fondatore del LFPUG (London Flash Platform User Group) e co-autore di Flash 8 essentials ha reso pubblico il sorgente del suo progetto Papervision.

In soldoni grazie al suo lavoro ora è possibile utilizzare delle transizioni 3D tra i component, gli stati, i viewstack e quant’altro con un semplice tag…AWESOME :D

ecco un po’ di esempi…
(more…)

 
Thursday, November 22nd, 2007

Inauguro con questo tutorial la finora linda categoria Flex :D

Il breve tutorial che andrete a leggere verte su come fare un semplice drag n drop tra 2 list component in modo che gli item dell’uno fungano come target al drop degli elementi dell’altro (una possibile applicazione potrebbe essere quella di spostare dei files all’interno di una lista di cartelle).

Il drag n drop standard:

Flex permette di abilitare il drag n drop tra due component direttamente da mxml, senza tanti problemi, abilitando le proprietà dragEnabled e dropEnabled dei componenti desiderati.

Il risultato che si ottiene abilitando dragEnabled e dropEnabled è questo:

[flash http://www.flashfuck.it/wp-content/uploads/2007/11/dragdropintoko.swf w=400 h=300]

Droppando gli elementi della tilelist all’interno del datagrid questi verranno clonati ed aggiunti allo stesso datagrid. Le righe del datagrid non sono selezionabili, i nuovi elementi sono aggiunti prima o dopo i record già presenti.

(more…)

Cosa sia uno spam bot è presto detto: sono quegli “affari” che gironzolano in rete lasciando spam ovunque, specialmente nei commenti dei blog e nelle community con libera iscrizione.

spambot.jpg
(foto di uno spambot)

Esistono una marea di plugin anti spam, askimet su wordpress, tutta una sfilza di mod antispam per i forum di phpBB, e anche molti scriptini confezionati a mano che possono risultare pi√π o meno efficaci.
Ma i metodi pi√π diffusi identificano l’utente “spam-bot” per esclusione, chiedendo un’interazione in pi√π all’utente umano.
(more…)

 
Wednesday, September 19th, 2007

Dalla Germania con furore arriva un package indispensabile per chi vuole cimentarsi con qualcosa di pi√π di una semplice image gallery.
Michael Baczynski, ha pubblicato sul suo blog il suo “Data Structures“.

AS3 Data Structures

ma vediamo di cosa si tratta…
(more…)

Molti siti propongono swf a tutto schermo conseguendo l’obbiettivo in vari modi pi√π o meno compatibili con le specifiche W3c.

Se la domanda che vi assilla è:
“Come si fa ad adattare un swf alle dimensioni della finestra del browser in modo che il risultato sia compatibile con i maggiori browser?” continuate pure a leggere :D

(more…)

La domanda da porsi è:
e se volessi mascherare più di un movieclip con la stessa maschera partendo da un mc già mascherato?

La risposta è:
esiste un hack a riguardo fin dai tempi di flash mx.

Funziona così:
si maschera un movieclip direttamente da timeline, gli si assegna un nome istanza (ad esempio “myClip”).
Una volta mascherato si può procedere con la parte di script.

myClip.attachMovie("movieclipinlibreria","nome",myClip.getDepth()-1);

così facendo il nuovo clip inserito nello stage sarà mascherato esattamente come myClip.
(more…)

 
Tuesday, July 17th, 2007

Fino ad actionscript 2 pulsanti e movieclip gestivano anche l’evento onReleaseOutside. Con l’avvento di flash 9 (pardon, cs3), il release outside è stato depennato, non si sa bene per quale motivo, però, per la disperazione di grandi e piccini, quell’evento non c’è pi√π.

Gestire l’onReleaseOutside in actionscript 3 è però pi√π facile di quanto si possa credere.
Scaricatevi questo file >> onReleaseOutside actionscript 3 (more…)