Экземпляр исчезает при анимации

#flash #actionscript-3 #animation

#flash #actionscript-3 #Анимация

Вопрос:

Я сделал видеоролик и прикрепил его к приведенному ниже коду.Когда я тестирую фильм и уже разместил экземпляр на сцене, он работает нормально.Когда я создаю экземпляр объекта с помощью кода и добавляю его на сцену, он исчезает, когда я нажимаю на него.Я работаю во flash.

 package {

import flash.display.MovieClip;
import flash.events.MouseEvent;
import fl.transitions.easing.*;

import com.greensock.*; 

public class Card6 extends MovieClip {

    public function Card6( )        {
        addEventListener(MouseEvent.CLICK, Enter);
    }
    private function Enter( ev : MouseEvent ) {
        TweenMax.to(this, 0.25,  { rotationY: 180 }  );
    }
  }
}
  

Это код, в котором я создаю экземпляр MovieClip из библиотеки, Card6 является базовым классом.

 var photo: MovieClip = new PhotoB( );
photo.x = 100;
photo.y = 300;
stage.addChild(photo);
  

Обновить :
Мне удается заставить его работать, я не знаю, как, поскольку я немного не изменил код.Проблема в том, что я не знаю, каково решение, и я сталкиваюсь с той же проблемой в других примерах.
Это код, который я использовал в первом кадре и работал.

 var sp : DisplayObject = new border( ); //<-- Different name,same Object
addChild(sp);
sp.x = 400;
sp.y = 300;
  

И это код, который я использовал для основного класса

 package {

import flash.display.MovieClip;

public class DocumentH extends MovieClip {

    public function DocumentH( )    {
    var sp : MovieClip = new border( );
    addChild(sp);
    sp.x = 400;
    sp.y = 300;
    }
  }
}
  

Я не могу сказать, что сделало разницу и сработало.Я пытаюсь сделать то же самое в другом fla и потерпел неудачу.В библиотеке у меня есть только один квадрат, который я конвертирую в MovieClip.
(Вот ссылка с fla http://www65.zippyshare.com/v/65975812/file.html ). Я использую Flash CS4 Pro

Ответ №1:

Я бы предположил, что это как-то связано с центральной точкой 3D-преобразования — когда вы добавляете ее на сцену, они устанавливаются в центр рассматриваемого объекта. Попробуйте установить z = 0 перед этим addChild() , чтобы инициализировать 3D-матрицу, и посмотрите, исчезнет ли она также мгновенно.

Если это произойдет, вам может потребоваться посмотреть, где находится 0-точка в видеоролике, или, возможно, даже выполнить для нее 3D-преобразования вместо обычных x, y.

РЕДАКТИРОВАТЬ: трудно точно определить, что нужно сделать, без дополнительной информации о том, как выглядит ваш элемент библиотеки, но попробуйте перевести 3D-матрицу в противоположную сторону от того, как вы ее перемещаете, например photo.transform.matrix3D.appendTranslation(-100, -300, 0); , после вашего перемещения. Также попробуйте установить для всех ваших позиций значение 0 и увеличить окно Flash Player, чтобы вы могли видеть свой объект. Это должно дать вам некоторое представление о том, что происходит 🙂

Комментарии:

1. Я не знаю, каким-то образом мне удалось выполнить эту работу, немного не изменив код, но проблема все еще остается, когда я использую код в основном классе. Объект исчезает.

2. Своеобразная проблема. Попробуйте переместить свой код в классе в функцию, которая вызывается при добавлении клипа на сцену (однако это выстрел в темноте). Вот так; addEventListener(Event.ADDED_TO_STAGE, stageListener) .

3. Мне не нужно было добавлять слушателя, теперь все работает. Я не знаю, как, я изменился stage.addChild на addChild , может быть, это было.

Ответ №2:

Попробуйте изменить длительность примерно на 5 секунд, чтобы вы могли видеть, как она увеличивается.

Комментарии:

1. Проблема в том, что он исчезает, когда я нажимаю на объект и активирую анимацию, не имеет ничего общего с продолжительностью, которую я пробовал. Когда я помещаю экземпляр на сцену перед тестированием фильма, он работает правильно, и теперь я не знаю, как это работает, даже когда я помещаю код инициализации внутрь первого кадра, но когда я использую класс Document для выполнения того же самого, он терпит неудачу, возникает та же проблема.

2. Конечно, это не имеет никакого отношения к продолжительности. Моя цель состояла в том, чтобы замедлить продолжительность настолько, чтобы вы могли видеть, как это происходит. Мои мысли по этому поводу таковы, что он исчезает, потому что ваш твин заставляет его исчезать с экрана. Замедление его позволит вам увидеть это. «.25» во всех аспектах — это мгновенная анимация, и вы, вероятно, даже не сможете понять, что происходит. Это был не ответ на каждое высказывание, а скорее способ помочь вам диагностировать его. Но я думаю, вы поняли это, так что все равно все хорошо.

3. Мне жаль, что эта проблема меня очень беспокоит и заставила меня действовать опрометчиво. Я решаю проблему, но все же не могу понять, в чем причина. Кто-то предполагает, что я помещаю его вне поля зрения, поэтому он исчезает, когда я действую в 3D-измерении.

4. Именно по этой причине я сказал вам замедлить продолжительность, чтобы вы могли это видеть.

5. Если я удалю анимацию и просто укажу поворот объекта, он вообще не появится.