ved at loade 2 billeder ovenpå hinanden, og kun lade det øverste billede være synligt ved mouseOver, kan man let lave et "fortryllet billedmodul" i Flash.
et sådan modul kunne fungere på denne måde:
http://campjohn.dk/AS3/Invita/enhancedPicture/exampla.html
(billederne i dette eksempel er lavet af min kollega Rune, der er en mester i Paint :D )
i ActionScript3.0 kunne eksemplet ovenfor kodes på denne måde:
//stop timeline i Flash'en
stop();
//importer de klasser, man har brug for
import caurina.transitions.Tweener;
//lav en Sprite, der skal indeholde det billede, der vises ved mouseOver
//en Sprite er som et MovieClip, men Sprites har - modsat MovieClips - ingen timeline.
//det har vi ikke brug for, så en Sprite er fint i denne henseende
var myForegroundSprite:Sprite = new Sprite();
//opret de to links til billederne, der skal bruges
var myBackgroundPictureURL:String = "infoPicRED.jpg";
var myForegroundPictureURL:String = "infoPicRED_shift.jpg";
//sæt funktionen createBackground igang
createBackground();
//funktionen createBackground
function createBackground():void {
//opret en loader, der kan håndtere at loade et billede ind i Flash'en
var myBackgroundLoader:Loader = new Loader();
//load billedet ind i Flash'en
var url:String = myBackgroundPictureURL;
var urlReq:URLRequest = new URLRequest(url);
myBackgroundLoader.load(urlReq);
//gør billedet synligt ved at placere det på scenen i Flash
addChild(myBackgroundLoader);
//sæt funktionen createForeground igang
createForeground();
}
//funktionen createForeground
function createForeground():void {
//smid myForegroundSprite på scenen
addChild(myForegroundSprite);
//
var myForegroundLoader:Loader = new Loader();
//
var url:String = myForegroundPictureURL;
var urlReq:URLRequest = new URLRequest(url);
myForegroundLoader.load(urlReq);
//sæt myForegroundSprite'n gennemsigtighed til 0, så det stadig er myBackgroundLoader, der er synlig, selv når myForegroundSprite'n smides ovenpå
myForegroundSprite.alpha = 0;
//put myForegroundLoader ind i myForegroundSprite'n og smid det på scenen.
//grunden til at myForegroundLoaderen ikke smides direkte på scenen er, at man ikke kan interagere med Loader'e
//det kan man derimod med Sprites
myForegroundSprite.addChild(myForegroundLoader);
//sæt funktionen createInteraction igang
createInteraction();
}
function createInteraction():void {
//hvis musen kommer over myForegroundSprite, skal funktionen myMouseOver køre
myForegroundSprite.addEventListener(MouseEvent.MOUSE_OVER, myMouseOver);
//hvis musen forlader myForegroundSprite, så skal funktionen myMouseOut køre
myForegroundSprite.addEventListener(MouseEvent.MOUSE_OUT, myMouseOut);
//lad håndikonet vises istedet for pilikonet for musen, når musen interagerer med myForegroundSprite
myForegroundSprite.buttonMode = true;
}
function myMouseOver(e:Event):void {
//lad myForegroundSprite blive helt synlig over 0.7 sekund
Tweener.addTween(myForegroundSprite, {alpha:1, time:0.7, transition:"linear"});
}
function myMouseOut(e:Event):void {
//lad myForegroundSprite blive helt usynlig over 0.7 sekund
Tweener.addTween(myForegroundSprite, {alpha:0, time:0.7, transition:"linear"});
}
her er koden uden alle kommentarerne:
stop();
import caurina.transitions.Tweener;
var myForegroundSprite:Sprite = new Sprite();
var myBackgroundPictureURL:String = "infoPicRED.jpg";
var myForegroundPictureURL:String = "infoPicRED_shift.jpg";
createBackground();
function createBackground():void {
var myBackgroundLoader:Loader = new Loader();
var url:String = myBackgroundPictureURL;
var urlReq:URLRequest = new URLRequest(url);
myBackgroundLoader.load(urlReq);
addChild(myBackgroundLoader);
createForeground();
}
function createForeground():void {
addChild(myForegroundSprite);
var myForegroundLoader:Loader = new Loader();
var url:String = myForegroundPictureURL;
var urlReq:URLRequest = new URLRequest(url);
myForegroundLoader.load(urlReq);
myForegroundSprite.alpha = 0;
myForegroundSprite.addChild(myForegroundLoader);
createInteraction();
}
function createInteraction():void {
myForegroundSprite.addEventListener(MouseEvent.MOUSE_OVER, myMouseOver);
myForegroundSprite.addEventListener(MouseEvent.MOUSE_OUT, myMouseOut);
myForegroundSprite.buttonMode = true;
}
function myMouseOver(e:Event):void {
Tweener.addTween(myForegroundSprite, {alpha:1, time:0.7, transition:"linear"});
}
function myMouseOut(e:Event):void {
Tweener.addTween(myForegroundSprite, {alpha:0, time:0.7, transition:"linear"});
}