.currentFrame en ActionScript 3
J'ai demandé avant avec un problème similaire et a reçu une excellente réponse, donc je m'excuse si c'est un peu frustrant. J'espère que ce sera rapide. Je suis la médiatisation d'un tutoriel Flash dans un effort pour expliquer un complexe biologique problème, et j'ai structuré la Timeline alors qu'il n'y a pas plus de deux images et de quatre couches. J'ai conçu ce avant sur la Scène de la timeline, mais il est devenu tellement bordélique, et avec un peu de problèmes, que j'ai décidé que je devais le refaire cette façon.
Elle est constituée de trois parties principales: - Un titre qui passe en premier dans deux segments, suivie par deux boutons (qui sont désactivées jusqu'à ce qu'ils aient bien fondu) et enfin des animations de molécules que le fade in et fade out indéfiniment sur une boucle. La page reste alors ambiante jusqu'à ce qu'un utilisateur clique sur l'un des boutons.
J'ai quatre couches sur le scénario principal - Actions, des Boutons, des Molécules et des Titres. Dans chaque pertinents d'images et d'animations.
Je veux le code de sorte qu'elle joue successivement après l'autre, mais je suis très difficile d'accéder à d'autres échéances à travers AS3.
Actuellement j'ai ceci dans le cadre des Actions de la couche:
import flash.events.Event;
NRPSText_mc.addEventListener(Event.ENTER_FRAME, FadeIn);
function FadeIn(event:Event):void
{
if (MovieClip(this.root).currentFrame > 0) {
NRPSText_mc.gotoAndPlay("NRPSFadeIn")
}
}
ColourButton_mc.addEventListener(Event.ENTER_FRAME, BtnFadeIn);
function BtnFadeIn(event:Event):void
{
if (NRPSText_mc.currentFrame == 30) {
ColourButton_mc.gotoAndPlay("ButtonPress")
}
}
Il devrait être clair à partir de ce que j'ai étiqueté de certains événements dans chaque scénario, et je veux qu'ils jouent en tant que l'un des finitions.
Le problème est de savoir quoi mettre avant ".currentFrame" dans chaque cas, et je ne peux pas le trouver n'importe où! Jusqu'à maintenant, j'ai été en mesure d'obtenir l'aide de "ce" et "MovieClip(ce.racine)", mais j'ai besoin d'être en mesure de savoir comment les références de ces délais pour le faire fonctionner. J'ai essayé ces codes avec de la "trace" et il semble bien fonctionner, donc je suppose que c'est là que réside le problème.
OriginalL'auteur PPartisan | 2012-02-20
Vous devez vous connecter pour publier un commentaire.
Tout d'abord si vous avez le code sur le scénario principal au lieu de
MovieClip(this.root).currentFrame
vous pouvez simplement utilisercurrentFrame
puisque l'on se réfère à l'objet que vous avez mis le script sur.Seconde, ce
va juste faire NRPSText_mc séjour à "NRPSFadeIn" label depuis appelé chaque image.
Troisième, si vous avez un clip sur la scène et que vous avez défini son nom d'instance, vous pouvez référencer son calendrier à PARTIR de parent (scène principale) par le nom de l'instance comme vous le faites avec
NRPSText_mc.gotoAndPlay("NRPSFadeIn")
. Si vous avez un script à l'INTÉRIEUR de ce movieclip suffit d'utilisergotoAndPlay()
etcurrentFrame
parce que vous êtes dans le même objet que d'un script.Aussi vous faire un peu mal. Approche commune consiste à utiliser la timeline d'une animation ou d'une sorte d'interpolation de la bibliothèque comme
TweenMax
. Comme vous utilisez le Flash IDE de la façon correcte de le faire même chose serait le suivant: créer des movieclips avec quoi que ce soit de l'animation pour vos objets que vous voulez; les placer sur le scénario principal, qui a obtenu sa propre animation impliquant ces clips; sur quelle image que vous voulez contrôler votre intérieur clips ensemble des scripts séparés avecstop()
,gotoAndPlay()
, etc.Si vous souhaitez être averti lorsqu'un élément fini de jouer à l'utilisation AS3 événements. Par exemple vous avez un movieclip nommé
mc
, ajouter un script à la dernière imagedispatchEvent(new Event("stopped!")); stop();
et au scénario principalDe cette manière, il est beaucoup plus facile que de vérifier les numéros d'image chaque événement enterframe.
OriginalL'auteur Valentin Simonov