package com.fladev.background
{
//import all classes
import caurina.transitions.Tweener;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.StageAlign;
import flash.display.StageDisplayState;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.FullScreenEvent;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class MainClass extends Sprite
{
//create variables
private var loaderMenu:Loader;
private var loaderNames:Array = new Array();
private var loaderContents:Array = new Array();
private var loaderSlide:Loader;
private var swfDisplayObject:DisplayObject;
private var swfComObject:Object;
private var xmlLoader:URLLoader = new URLLoader();
private var xmlSlideLoader:URLLoader = new URLLoader();
public function MainClass()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, stageResize);
xmlLoader.addEventListener(Event.COMPLETE, showXML);
xmlLoader.load(new URLRequest("navigation.xml"));
//xmlSlideLoader.addEventListener(Event.COMPLETE, showSlideXML);
//xmlSlideLoader.load(new URLRequest("slides.xml"));
}
function showXML(e:Event):void
{
XML.ignoreWhitespace = true;
var menuBtns:XML = new XML(e.target.data);
var i:Number = 0;
for (i = 0; i < menuBtns.navItem.length(); i++)
{
loaderMenu = new Loader();
loaderMenu.name = menuBtns.navItem[i].name ;
loaderMenu.load(new URLRequest(menuBtns.navItem[i].swfURL));
loaderMenu.contentLoaderInfo.addEventListener(Event.COMPLETE, createSwfObjects);
}
}
private function createSwfObjects(event:Event):void
{
var swfContent = event.currentTarget.content as MovieClip ;
var swfName = event.currentTarget.loader ;
navigationContainer.addChild(event.target.loader);
showImage(swfContent);
if (swfName.name == 'topNavigation')
{
swfContent.addEventListener("clickHandle",topNavigationClickHandler);
}
}
private function topNavigationClickHandler():void
{
trace('Back to root');
}
private function showImage(navigationItem):void
{
try
{
navigationItem.alpha = 0;
Tweener.addTween(navigationItem, { alpha:1, time:1, transition:"easeOutSine" });
navigationItem.smoothing = true;
} catch (e:Error) { trace('Error no tweening'); };
stageResize();
}
private function stageResize(e:Event=null):void
{
var centerImages:Array = new Array (contentContainer, navigationContainer, backgroundImage) ;
backgroundImage.x = 0;
backgroundImage.y = 0;
backgroundImage.scaleX = backgroundImage.scaleY = 1;
if ((stage.stageHeight/stage.stageWidth) < backgroundImage.height/backgroundImage.width) {
backgroundImage.width = stage.stageWidth;
backgroundImage.scaleY = backgroundImage.scaleX;
} else {
backgroundImage.height = stage.stageHeight;
backgroundImage.scaleX = backgroundImage.scaleY;
}
for each (var centered:MovieClip in centerImages)
{
centered.x = stage.stageWidth/2 - centered.width/2;
centered.y = stage.stageHeight/2 - centered.height/2;
}
}
}
}
Ceci est mon code pour le main.as.événement Dispatching ne se déclenche pas :(
Et voici mon code pour mon SWF chargé sur le maintimeline.
addEventListener(Event.ADDED_TO_STAGE, init);
function init(event:Event):void
{
trace('try dispatch');
dispatchEvent(new Event("clickHandle",true));
}
travaux d'expédition Try , mais il ne revient pas au principal feu vers le haut « Retour à la racine ». Toute idée?
thx!
Merci pour votre réponse. Je viens d'ajouter une trace à votre premier code, mais ça marche bien. Il est tracé "ajout d'écouteur" mais le "clickHandle" n'est toujours pas activé. J'ai aussi essayé d'ajouter un événement pour une mouse.CLICK appelant la fonction: \t \t 'private function testClick (event: MouseEvent) \t \t { \t \t \t trace (clic enregistré»); \t \t \t event.currentTarget.init (null); \t \t \t événement.currentTarget.addEventListener ("clickHandle", topNavigationClickHandler); \t \t} ' mais cela fonctionne pour les 2 premières lignes, trace et init fonction de mon swf chargé mais pas pour le « clickHandle » à nouveau ... – 1stIssue
Dans le code ci-dessus vous avez collé, vous appelez la Méthode init avant d'avoir ajouté l'écouteur à l'objet. Cela ferait dépendre l'événement avant que vous soyez prêt à le recevoir. Aussi, ajoutez-vous ce swf chargé à la scène n'importe où? Si ce n'est pas le cas, et que vous voulez simplement le tester comme vous l'avez montré ci-dessous, essayez de désactiver la bulle d'événement, au cas où cela risquerait d'endommager votre auditeur direct en essayant de passer la liste d'affichage. Si l'objet n'est pas ajouté, il n'a pas de parent et est donc déconnecté de la liste d'affichage et le bouillonnement échouera. –
Oh mec, résolu l'erreur. En demandant à un autre gars, il m'a dit d'essayer ceci: stage.dispatchEvent (new Event ("clickHandle", true)); dans mon SWF chargé.Maintenant, j'ai essayé votre manquant (événement: Événement) et supprimé la scène de sorte qu'il dit: dispatchEvent (nouvel événement ("clickHandle", vrai)); et maintenant il semble fonctionner :) Donc, autant que je peux l'imaginer, il a provoqué l'erreur à cause de l'événement manquant: Événement! :) Merci beaucoup ! :) – 1stIssue