2011-05-06 6 views
0

J'ai un projet ActionScript qui utilise des symboles visuels d'un SWC.Comment les classes du projet actionscript remplacent-elles les classes d'un fichier SWC Flash CS3?

J'ai un CheckoutButton auquel la classe suivante est associée (compilé dans le fichier SWC dans Flash CS3).

public class CheckoutButton extends SimpleButton { 

    public function CheckoutButton() {  
     this.addEventListener(MouseEvent.CLICK, checkoutClicked); 
    } 

    // click on the button and the alpha will go to 50% 
    public function checkoutClicked(e:MouseEvent):void { 
     this.alpha = .5; // take user to checkout 
    } 

    public function dispose():void { 

    } 
} 

Important: Le fichier CheckoutButton.as est dans le classpath du projet actionscript qui utilise le SWC.


-je utiliser la compilé SWC dans un projet actionscript et j'ai couru les scénarios suivants:

1) je supprime CheckoutButton.as du classpath pour mon projet actionscript:

var x:CheckoutButton = new CheckoutButton(); 
addChild(x); 

Je reçois une instance du symbole visuel de mon fichier Flash CS3. Quand je clique dessus, c'est l'alpha qui passe à 50%. C'est exactement comme je m'y attendais.

2) Je lance ce code avec CheckoutButton.as dans le classpath pour mon projet actionscript:

var x:CheckoutButton = new CheckoutButton(); 
addChild(x); 

Rien ne se passe pas du tout. C'est exactement ce que j'attends - parce que j'ai fondamentalement remplacé la définition de classe du SWC par un SimpleButton qui n'a aucune fonctionnalité visuelle.


Maintenant, j'ai aussi une animation de scénario CheckoutAnimation dans mon fichier Flash qui arrive juste à contenir une instance du symbole CheckoutButton.

3) Je lance le projet actionscript après SUPPRIMER CheckoutButton.as du classpath:

var x:CheckoutAnimation = new CheckoutAnimation(); 
addChild(x); 

Le symbole dans l'animation reprend la définition de classe (initialement compilé dans le SWC) et quand je clique dessus la alpha du symbole va à 50%. C'est exactement comme prévu.

4) je lance le projet actionscript avec CheckoutButton.as encore dans le classpath:

var x:CheckoutAnimation = new CheckoutAnimation(); 
addChild(x); 

Le symbole de commande apparaît dans l'animation, mais en cliquant dessus ne fait rien !!

POURQUOI CELA EST-CE! JE NE COMPRENDS PAS! Je ne comprends pas pourquoi je n'obtiens pas le même résultat que dans (2) ci-dessus, et je ne comprends absolument pas pourquoi aucun code n'est en cours d'exécution. Quel est le conflit ici?

Répondre

0

Ceci est un plan long, mais basé sur le petit morceau de code que vous avez fourni, c'est la seule chose qui vient à l'esprit. Dans votre exemple, vous avez ajouté x à la liste d'affichage 4 fois. Il est possible que plusieurs occurrences de ce symbole soient empilées les unes sur les autres dans la liste d'affichage. Lorsque vous définissez l'alpha de tout ou partie d'entre eux, vous ne remarquez pas de changement parce que vous voyez les autres symboles en dessous.

Je comprends que votre code ici pourrait être juste un exemple, mais si vous avez ajouté x à la liste d'affichage 4 fois, alors c'est votre problème.Je l'ai déjà fait, et cela peut passer inaperçu jusqu'à ce que vous commenciez à jouer avec des alphas ou que vous commenciez à déplacer des objets.

+0

merci pour la pensée latérale - malheureusement ce n'est pas le coupable cette fois. J'essaie principalement de comprendre ce que le comportement est censé être - l'exemple était une simplification pour cette question –

Questions connexes