Перенесите объект вперед, во Flash AS3 - PullRequest
2 голосов
/ 29 апреля 2010

У меня есть приведенный ниже код, который в основном анимирует объект по экрану, когда происходит переворачивание, он приостанавливает анимацию и отображает некоторую информацию. Все работает нормально, но когда оно приостановлено, я вижу, что текущий объект находится «сверху», поэтому другие элементы бегут позади.

Я посмотрел на setChildIndex, но мне не повезло.

package {

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.events.KeyboardEvent;
import flash.events.*;
import caurina.transitions.Tweener;
import fl.motion.Color;

public class carpurchase extends Sprite {

    public function carpurchase() {

        var carX = 570;


        //Set cars
        var car1:fullCar = new fullCar();
        car1.info.alpha = 0;
        //var c:Color = new Color();
        //c.setTint(0xff0000, 0.8);
        //car2.car.transform.colorTransform=c;
        car1.x = carX;
        car1.y = 280;
        car1.info.title.text = "test";
        car1.info.desc.text = "test";
        addChild(car1);
        car1.addEventListener(MouseEvent.ROLL_OVER, carPause);
        car1.addEventListener(MouseEvent.ROLL_OUT, carContinue);
        function car1Reset():void {
            Tweener.addTween(car1, {x:carX, time:0, onComplete:car1Tween});
        }
        function car1Tween():void {
            Tweener.addTween(car1, {x:-120, time:2, delay:3, transition:"linear", onComplete:car1Reset});
        }
        car1Tween();


        var car2:fullCar = new fullCar();
        car2.info.alpha = 0;
        var c:Color = new Color();
        c.setTint(0xff0000, 0.8);
        car2.car.transform.colorTransform=c;
        car1.x = carX;
        car2.y = 175;
        car2.info.title.text = "test";
        car2.info.desc.text = "test";
        addChild(car2);
        car2.addEventListener(MouseEvent.ROLL_OVER, carPause);
        car2.addEventListener(MouseEvent.ROLL_OUT, carContinue);
        function car2Reset():void {
            Tweener.addTween(car2, {x:carX, time:0, onComplete:car2Tween});
        }
        function car2Tween():void {
            Tweener.addTween(car2, {x:-120, time:3, delay:0, transition:"linear", onComplete:car2Reset});
        }
        car2Tween();



        function carPause(e:MouseEvent):void {
            Tweener.pauseTweens(e.target);
            Tweener.addTween(e.target.info, {y:-150, alpha:1, time:.5, transition:"easeout"});
        }   
        function carContinue(e:MouseEvent):void {
            Tweener.addTween(e.target.info, {y:10, alpha:0, time:.5, transition:"easeout"});
            Tweener.resumeTweens(e.target); 
        }
    }
}

Любая помощь приветствуется

Ответы [ 5 ]

8 голосов
/ 01 мая 2010

Просто используйте addChild () для этого конкретного экземпляра. Он будет помещен в «топ»

Из справочных файлов:

Добавляет дочерний экземпляр DisplayObject к этому экземпляру DisplayObjectContainer. Дочерний элемент добавляется в перед (вверху) всех других дочерних элементов в этом экземпляре DisplayObjectContainer.

И да, это работает, даже если объект уже находится в списке отображения.

4 голосов
/ 29 апреля 2010

Вы пробовали setChildIndex ?

3 голосов
/ 29 апреля 2010
function carPause(e:MouseEvent):void {
    setChildIndex(e.target, numChildren-1);
    Tweener.pauseTweens(e.target);
    Tweener.addTween(e.target.info, {y:-150, alpha:1, time:.5, transition:"easeout"});
} 
2 голосов
/ 08 мая 2013

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

Проблема была в том, что вы пытались установить childindex из самого объекта-загрузчика, но это самое подходящее место для его установки. Вам нужен родительский путь, чтобы в этом случае получить доступ ко всем вашим машинам.

Ну, короче говоря: Попробуйте эти изменения: Создать новый Sprite в канале атрибутов (после имени класса)

// [...]
public class carpurchase extends Sprite {
   private var _sprite:Sprite = new Sprite();
}
// [...]
// Add the cars to the sprite
  _sprite.addChild(car1); // replace this lines
//[...]
  _sprite.addChild(car2); // replace this lines
// Of course adding the sprite to your stage
  addChild(_sprite);

После этого получите доступ к текущей цели, найдя по имени и установив ее сверху

_mc.setChildIndex(_mc.getChildByName(e.target.name), _mc.numChildren-1); // Set on top

Пусть это поможет кому-нибудь когда-нибудь

1 голос
/ 29 апреля 2010

вы пробовали addChildAt?

Документы Adobe Live - addChildAt ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...