FLASH MAHER
Adobe Flash Professional – Univerzalna knjiga
ACTION SCRIPT 3.0
MASKA
Maska je samo jedna od osobina koje su veoma dobro urađene programom Adobe Flash Professional. Masku je moguće uraditi i iz vremenske linije promenom osobine lejera u ’Mask’ i uz pomoć kodiranja. Prva metoda sa dodatkom OOP loadera i kodiranog simbola je prikazana u narednom primeru. Linkovi slika koje se smenjuju su zapisani u ’XML’ fajlu. Takođe su u njemu podaci i o brzini izbleđivanja slike, koeficijentu izbleđivanja slika i dužini trajanja pauze do zamene postojeće slike novom. U ovom primeru se vidi da sem linkova, skoro sve što treba da se podesi možemo da definišemo u ’XML’ bazi, i na taj način olakšamo testiranje programa pri raznim vrednostima podataka.
Primer:
import flash.geom.*;
import flash.filters.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.net.*;
import PictureLoader;
var Photos:Array = new Array();
Photos[0] = new MovieClip();
var Text:TextField = new TextField();
Text.width = Text.height = 250;
Text.background = Text.selectable = false;
Text.wordWrap = true;
var FontTextFormat:TextFormat = new TextFormat(“Georgia”, 42, 0xffff00, true, false, false, null, null, “center”);
Text.defaultTextFormat = FontTextFormat;
var FilterShadow:DropShadowFilter = new DropShadowFilter();
var FilterGlow:GlowFilter = new GlowFilter(0x333333, 0.7, 10, 10);
Text.filters = [FilterShadow, FilterGlow];
Text.text = “And\nyou are\ncertainly\ngood!!!”;
Photos[0].addChild(Text);
addChild(Photos[0]);
var OldId:int = 0;
var NewId:int = 1;
var MaxId:int = 0;
var MainXml:XML = new XML();
var XMLLoader:URLLoader = new URLLoader();
XMLLoader.addEventListener(Event.COMPLETE, CompleteHandler);
XMLLoader.load(new URLRequest(“Photos.xml”));
function CompleteHandler(event:Event):void {
XMLLoader.removeEventListener(Event.COMPLETE, CompleteHandler);
MainXml = new XML(event.target.data);
for each(var Picture in MainXml..Picture) {
MaxId += 1;
Photos[MaxId] = new MovieClip();
var NewPictureLoader:PictureLoader = new PictureLoader(Photos[MaxId], String(Picture.Name));
if(MaxId == 2) {
StartNextPhotos();
}
}
}
function StartNextPhotos():void {
Photos[NewId].alpha = 0;
addChild(Photos[NewId]);
var WaitTimer:Timer = new Timer(Number(MainXml.Speed));
WaitTimer.addEventListener(TimerEvent.TIMER, NextPicture);
WaitTimer.start();
function NextPicture(event:TimerEvent):void {
Photos[OldId].alpha -= Number(MainXml.AlphaStep);
Photos[NewId].alpha += Number(MainXml.AlphaStep);
if(Photos[OldId].alpha <= Number(MainXml.AlphaStep)) {
WaitTimer.removeEventListener(TimerEvent.TIMER, NextPicture);
WaitTimer.stop();
Photos[NewId].alpha = 1;
OldId = NewId;
NewId == MaxId ? NewId = 0: NewId ++;
setTimeout(StartNextPhotos, Number(MainXml.Pause));
}
event.updateAfterEvent();
}
}
Simbol ’MainMask’ ima svoj kod:
var RotateTimer:Timer = new Timer(30);
RotateTimer.addEventListener(TimerEvent.TIMER, RotatePicture);
RotateTimer.start();
function RotatePicture(event:TimerEvent):void {
this.rotation += 5;
event.updateAfterEvent();
}
Dodatni fajl u AS3.0 kodu je ’PictureLoader.as’ gde se vidi prost primer OOP:
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.net.*;
public class PictureLoader {
public function PictureLoader(UniObject:MovieClip, Link:String):void {
var MyUILoader:Loader = new Loader();
MyUILoader.load(new URLRequest(Link));
MyUILoader.contentLoaderInfo.addEventListener( Event.COMPLETE, CompleteHandler);
function CompleteHandler(event:Event):void {
MyUILoader.contentLoaderInfo.removeEventListener( Event.COMPLETE, CompleteHandler);
UniObject.BitMap = Bitmap(MyUILoader.content);
UniObject.addChild(UniObject.BitMap);
}
}
}
}
I konačno ’Photos.xml’ je sledećeg koda:
<?xml version=”1.0″ encoding=”utf-8″?>
<Store>
<Speed>50</Speed>
<Pause>3000</Pause>
<AlphaStep>0.05</AlphaStep>
<Picture>
<Name>Picture1.jpg</Name>
</Picture>
<Picture>
<Name>Picture2.jpg</Name>
</Picture>
<Picture>
<Name>Picture3.jpg</Name>
</Picture>
<Picture>
<Name>Picture4.jpg</Name>
</Picture>
<Picture>
<Name>Picture5.jpg</Name>
</Picture>
<Picture>
<Name>Picture6.jpg</Name>
</Picture>
<Picture>
<Name>Picture7.jpg</Name>
</Picture>
<Picture>
<Name>Picture8.jpg</Name>
</Picture>
<Picture>
<Name>Picture9.jpg</Name>
</Picture>
<Picture>
<Name>Picture10.jpg</Name>
</Picture>
</Store>
Kao kod simbola ’MainMask’, svaki simbol može da ima svoj kod. Može da se koristi i animacija i kodiranje svakog simbola posebno, a moguća je i komunikacija između skripti koje su pisane u simbolima, tako da su mogućnosti koje AS3.0 nudi sa simbolima izvanredne.
Drugi primer uz korišćenje samo AS3.0 koda:
import flash.geom.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import PictureLoader;
var Photos:MovieClip = new MovieClip();
var PhotosLoader:PictureLoader = new PictureLoader(Photos, “Picture1.jpg”);
addChild(Photos);
var CircleMask:Sprite = new Sprite();
CircleMask.graphics.beginFill(0x000000);
CircleMask.graphics.drawCircle(100, 100, 50);
CircleMask.graphics.endFill();
addChild(CircleMask);
Photos.mask = CircleMask;
Photos.addEventListener(MouseEvent.MOUSE_DOWN, StartDrag);
Photos.addEventListener(MouseEvent.MOUSE_OUT, StopDrag);
Photos.addEventListener(MouseEvent.MOUSE_UP, StopDrag);
function StartDrag(event:MouseEvent):void {
CircleMask.startDrag();
}
function StopDrag(event:MouseEvent):void {
CircleMask.stopDrag();
}
U ovom primeru se poziva isti ’PictureLoader.as’ za učitavanje jedne slike. Moguće je i pomeranje maske mišem komandom ’startDrag()’.
FLASH MAHER!
FLASH MAHER – UVOD!
FLASH MAHER – OSNOVNI PODACI!
FLASH MAHER – OPERATORI I USLOVNE NAREDBE!
FLASH MAHER – FUNKCIJE!
FLASH MAHER – DOGAĐAJI!
FLASH MAHER – FILTERI!
FLASH MAHER – GRAFIKA!
FLASH MAHER – MASKA!
FLASH MAHER – ANIMACIJA!
FLASH MAHER – OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE!
FLASH MAHER – FLASH I PHP!
VojaMaher