Вспышка: ошибка при попытке использовать setChildIndex и TweenLite для создания эффекта прокрутки кнопки

alt text
(источник: flickr .com)

Привет всем снова :) Итак, сегодня я пытаюсь создать простой эффект свечения на кнопке RollOver. Возможно, я слишком усложняю ситуацию, но я использую 2 клипа movieClips (состояние по умолчанию и состояние over).

Сначала я добавляю в сцену состояние по умолчанию, затем добавляю в сцену состояние rollOver, но с глубиной 0 и альфа, также равной 0. Теперь я хочу, чтобы состояние rollOver меняло глубину с состоянием по умолчанию, а также анимировало до полной альфы с помощью класса TweetLite, чтобы получить приятный плавный переход.

Я получаю сообщение об ошибке прямо сейчас, но вот мой код:

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);
}

Я получаю сообщение об ошибке RollOver :(

ArgumentError: Ошибка № 2025: предоставленный объект DisplayObject должен быть дочерним по отношению к вызывающему. в flash.display :: DisplayObjectContainer / setChildIndex () в test_fla :: MainTimeline / sendToTop ()

Я не понимаю, что означает ошибка, если предоставленный DisplayObject должен быть дочерним по отношению к вызывающему?


person Leon Gaban    schedule 10.09.2009    source источник


Ответы (1)


Исходя из того, чего вы пытаетесь достичь, вам не нужно управлять глубиной. По сути, вы можете просто добавить эффект опрокидывания внутри shopButton, а затем, наведя курсор на shopButton, анимировать свечение. Я обновил ваш код следующим образом:

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");
}
person Preston    schedule 10.09.2009
comment
Спасибо! Я больше не получаю эту ошибку, но все еще не вижу свою анимацию Tween ... хмммз - person Leon Gaban; 10.09.2009