FLash: erreur lors de la tentative d'utilisation de setChildIndex et TweenLite pour créer un effet rollOver de bouton

StackOverflow https://stackoverflow.com/questions/1406363

Question

 alt text
(source: flickr.com )

Coucou à nouveau tout le monde :) Donc, aujourd’hui, j’essaie de créer un simple effet de rayonnement sur le bouton rollOver. Je complique peut-être les choses, mais pour y parvenir, je dois avoir 2 movieClips (état par défaut et état over).

D'abord, j'ajoute l'état par défaut à la scène, puis j'ajoute l'état rollOver à la scène, mais à une profondeur de 0 et la valeur alpha est également définie sur 0. Maintenant, je veux que l'état rollOver permute les profondeurs avec l'état par défaut, ainsi que l'animation jusqu'à l'alpha complet en utilisant la classe TweetLite afin d'obtenir une belle transition en douceur.

Je reçois une erreur en ce moment, mais voici mon code:

import gs.TweenLite;
import fl.motion.easing.*;
import flash.display.MovieClip;


var shopButton:MovieClip;
var shopButtonRoll:MovieClip;
var maxIndex:Number = this.numChildren - 1;

// Button - places the default state onto the stage
shopButton = new ShopButton();
shopButton.name = "shopButton";
shopButton.x = 262;
shopButton.y = 207;
shopButton.stop();
thumbsMov.addChild(shopButton);

// Button Glow - places rollOver state under the default and with 0 alpha
shopButtonRoll = new ShopButtonRoll();
shopButtonRoll.name = "shopButtonRoll";
shopButtonRoll.x = 262;
shopButtonRoll.y = 207;
shopButtonRoll.alpha = 0;
thumbsMov.addChildAt(shopButtonRoll, 0);

// Listeners

shopButton.addEventListener(MouseEvent.MOUSE_UP, shopClick);
shopButton.addEventListener(MouseEvent.ROLL_OVER, sendToTop);
shopButton.addEventListener(MouseEvent.ROLL_OUT, shopOff);
shopButtonRoll.addEventListener(MouseEvent.ROLL_OVER, shopOver);

// Button Actions 
// shopOver should bring rollOver to top and animate to 100%

function shopOver(event:MouseEvent):void
{
     TweenLite.to(shopButtonRoll, 1, {alpha:1});
}
function shopOff(event:MouseEvent):void
{
     // Code to animate back to 0 then change depth of rollOver to 0
}
function shopClick(event:MouseEvent):void
}
     trace("You clicked Shop");
}

// sendToTop Function
// Sent to top - depth change
function sendToTop(e:Event):void
{
     //this.setChildIndex(ShopButton(e.target), maxIndex);
     this.setChildIndex(e.currentTarget as MovieClip, maxIndex);
}

L'erreur sur RollOver: (

ArgumentError: Erreur n ° 2025: l'objet DisplayObject fourni doit être un enfant de l'appelant.     at flash.display :: DisplayObjectContainer / setChildIndex ()     à test_fla :: MainTimeline / sendToTop ()

Je ne comprends pas ce que l'erreur signifie par l'objet DisplayObject fourni doit être un enfant de l'appelant?

Était-ce utile?

La solution

En fonction de ce que vous tentez d'accomplir, vous n'avez pas à gérer les profondeurs. Essentiellement, vous pouvez simplement ajouter votre effet de survol à l'intérieur du shopButton, puis une fois passé sur le shopButton, animez la lueur. J'ai modifié votre code avec les éléments suivants:

import gs.TweenLite;
import fl.motion.easing.*;
import flash.display.MovieClip;


var shopButton:MovieClip;
var shopButtonRoll:MovieClip;

// Button - places the default state onto the stage
shopButton = new ShopButton();
shopButton.name = "shopButton";
shopButton.x = 262;
shopButton.y = 207;
shopButton.stop();
thumbsMov.addChild(shopButton);

// Button Glow - places rollOver state under the default and with 0 alpha
shopButtonRoll = new ShopButtonRoll();
shopButtonRoll.name = "shopButtonRoll";
shopButtonRoll.alpha = 0;
shopButton.addChild(shopButtonRoll);


// Listeners
shopButton.buttonMode = true;
shopButton.addEventListener(MouseEvent.MOUSE_UP, shopClick);
shopButton.addEventListener(MouseEvent.ROLL_OVER, shopOver);
shopButton.addEventListener(MouseEvent.ROLL_OUT, shopOff);

// Button Actions 
// shopOver should bring rollOver to top and animate to 100%

function shopOver(event:MouseEvent):void
{
     TweenLite.to(shopButtonRoll, 1, {alpha:1});
}
function shopOff(event:MouseEvent):void
{
    TweenLite.to(shopButtonRoll, 1, {alpha:0});
     // Code to animate back to 0 then change depth of rollOver to 0
}
function shopClick(event:MouseEvent):void
}
     trace("You clicked Shop");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top