Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

BitmapData e metodo draw

This is a discussion on BitmapData e metodo draw within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; La classe BitmapData è un mondo meraviglioso. Ci permette di lavorare con le immagini, animarle, 'giocare' coi loro pixels e ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 19-09-07, 14:13
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
BitmapData e metodo draw

La classe BitmapData è un mondo meraviglioso. Ci permette di lavorare con le immagini, animarle, 'giocare' coi loro pixels e tanto altro ancora. Per chi non si fosse mai avvicinato a questa classe, proverò a rendergli la vita più facile partendo dal metodo draw della BitmapData. Cosa fa il metodo draw ? Per semplificare, si può dire che questo metodo scatta una fotografia ad un oggetto passatogli come parametro (source). Questo metodo richiede 6 parametri ...
ma in questo tutorial ne userò solo uno in modo da rendere semplice l'avvicinamento alla classe. Il parametro in questione è appunto source, cioè il nome istanza dell'oggetto che vogliamo 'fotografare'.


Entriamo nel vivo:

- creo un FLA e lo salvo con nome ' bitmapdata_draw.fla ' al cui interno creo una MovieClip e la animo con delle interpolazioni frame to frame.

- creo la Document Class, un file AS che salvo con nome ' Drawing.as '

- associo il FLA alla classe (abbiamo già visto come: vedi il miglior modo di istanziare la Main Class in questo sito).




Ed ecco come ho scritto la Document Class:

Code:
package
{
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.events.*;
	
	public class Drawing extends MovieClip
	{
		private var bitmap:BitmapData;
		private var bitmaps_array:Array;
		private var W:int=100;
		private var H:int=100;
		private var ratio:int=5;
		private var clipCounter:int=0;
		private var distance:int=10;
		private var lines:int=0;
		
		public function Drawing()
		{
			stage.frameRate=31;
			clip_mc.stop();
			init();
		}
		
		private function init():void
		{
			bitmaps_array=new Array();
			clip_mc.play();
			addEventListener(Event.ENTER_FRAME,onEnterFrameDraw);
		}
		
		private function onEnterFrameDraw(event:Event):void
		{
			if(!(clip_mc.currentFrame%ratio))
			{
				bitmap=new BitmapData(W,H,true,0xFFFFFFFF);
				bitmap.draw(clip_mc);
				bitmaps_array.push(bitmap);
				var image:Bitmap=new Bitmap(bitmap);
				addChild(image);
				image.y=150+distance;
				image.x=(W+distance)*clipCounter;
				if(!(clipCounter%ratio)&&clipCounter!=0)
					lines++;
				image.y+=(100+distance)*lines;
				image.x=(W+distance)*(clipCounter-(ratio*lines));
				clipCounter++;
			}
			if(clip_mc.currentFrame==clip_mc.totalFrames)
			{
				removeEventListener(Event.ENTER_FRAME,onEnterFrameDraw);
				initButtonListener();
			}
		}
		
		private function initButtonListener():void
		{
			ripeti_btn.addEventListener(MouseEvent.MOUSE_DOWN,clearData);
		}
		
		private function removeButtonListener():void
		{
			ripeti_btn.removeEventListener(MouseEvent.MOUSE_DOWN,clearData);
		}
		
		private function clearData(event:MouseEvent):void
		{
			for(var i:int=0;i < bitmaps_array.length;i++)
			{
				bitmaps_array[i].dispose();
			}
			removeButtonListener();
			clip_mc.gotoAndStop(1);
			clipCounter=0;
			lines=0;
			init();
		}
	}
}
Risultato:










Nello script, sotto intervallo onEnterFrame, conrollo il numero del frame corrente della MovieClip che abbiamo sul FLA.

Se è un multiplo di 5 allora creo una nuova BitmapData che poi passo come valore a new Bitmap(BitmapData) e faccio un addChild della bitmap o altrimenti non sarebbe visibile.

Il resto del codice è per posizionare le immagini create e gestire gli eventi del bottone ' ripeti '.
Allego i files sorgente:
Attached Files
File Type: zip bitmapdata_draw.zip (11.1 KB, 11 views)

__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !

Last edited by Flep; 04-06-08 at 23:47..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Esportare una bitmapdata masky Actionscript 3.0 avanzato 6 02-04-08 08:21
BitmapData - draw method of Actionscript 3.0 Flep Tutorials 0 09-10-07 19:43
BlurFilter and BitmapData with Flash CS3 Flep Tutorials 0 08-10-07 16:41
BlurFilter e BitmapData con Flash CS3 Flep Articoli e tutorials 0 19-09-07 14:53
BitmapData.draw() da movieclip aguia Actionscript 3.0 avanzato 7 31-08-07 07:24


All times are GMT. The time now is 12:43.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406