#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. Если я удалю анимацию и просто укажу поворот объекта, он вообще не появится.