Просмотр полной версии : Динамическое изменение MovieClip'а
Доброго времени суток! Подскажите пожалуйста, как реализовать такую штуку:
Есть мувик с n кадравми.
Нужно при помощи ActionScript добавить в кадр m дисплейный объект Object...
Object не "дисплейный объект".
А вообще
mc.gotoAndStop(n);
mc.addChild(object);
Object не "дисплейный объект".
m и n тоже не числа )))
К сожалению, то что пришло на ум с первого взгляда на проблему - был именно приведенный Вами код.. И опять же, к сожалению он не работает - отсюда и собсно проблема.
Vansimar
15.10.2011, 11:36
у меня этот код всегда работал..
m и n тоже не числа )))
Тогда.
mc.gotoAndStop("n");
mc.addChild(object);
Если и это не сработает, значит нужно менять корявую архитектуру проекта.
может так?
...
mc.addEventListener( Event.ENTER_FRAME, mcEnterFrameHandler);
...
function mcEnterFrameHandler(e:Event):void
{
if( mc.currrentFrame === n )
{
mc.addChild( object);
}
}
кстати, в кадрах или в классе пишете?
В классе конечно! Когда я делаю как приведено выше, получается, что новый объект виден во всех кадрах мувика, а не только в том, в который я его добавил...
Cornford
16.10.2011, 09:58
помоему это естественно, ведь объект добавляется в сам мувиклип.
Добавлено через 2 минуты
мне кажется придется писать свой класс который к примеру будет отрисовывать какждый кадр в BitmapData, и там уже добавлять объект в конкретный кадр.
Есть MovieClip с тремя кадрами. В кадрах едет квадратик при помощи MotionTween.
Для того, чтобы получить битмап каждого кадра делаю так:
Перевожу мувик на кадр1, все объекты с этого кадра addChild'ю на заранее созданный Sprite, из Sprit'а получаю BitmapData, там уже Bitmap.
Перевожу на второй кадр мувик и тут начинается проблема.. На предыдущем шаге то я все снес с этого мувика вообще путем метода addChild... так как анимация на MotionTween'е, то весь этот квадратик с его тремя кадрами благополучно перекочевал на Sprite в предыдущем шаге.....как быть?((((((
по моему ответ очевиден: после отрисовки на спрайте addChild-ить обратно на мувик...
ЗЫ. Вы ведь понимаете, что что-то "мудрите"? Почему, например, не отрисовывать в битмапдату сам мувик?
Обратно addChild'ить на мувик? Тогда тут другая проблема - как addChild'ить в произвольный кадр мувика..
Я это и пытаюсь сделать (перевести мувик в битмапу).. А что, есть какой то другой (отличный от моего) способ решения этой задачи?
Нельзя програмно добавить что-то не во все кадры мувика.
Не используйте кадры не как просто анимацию. Это ведёт к куче весьма противных проблем. Если, например, у вас был мувик с 3-мя кадрами, то, например, разбейте его на 3 мувика и добавляйте на сцену один, а остальные убирайте програмно.
И снова вездесущий вопрос - как разбить на три отдельных мувика?
Сделать три отдельных мувика, не?
crazyone
16.10.2011, 13:33
1) Чтобы добавить что-то только на какой-нибудь кадр, попробуйте сделать вот так:
package com.ds.test {
import flash.display.MovieClip;
import flash.display.Shape;
import flash.events.Event;
/**
* ...
* @author DoctorSTaL
*/
public class AddObjectToFrame extends MovieClip {
var object:Shape = new Shape();
var frame = 10;
public function AddObjectToFrame() {
super();
this.object.graphics.beginFill(0xff0000);
this.object.graphics.drawCircle(50, 50, 50);
this.addFrameScript(this.frame-1,this.addObject);
this.addEventListener(Event.EXIT_FRAME,this.checkObject);
}
private function addObject():void {
this.addChild(object);
}
private function checkObject(e:Event):void {
// Вот тут может понадобиться изменение - не помню точно про номер кадра, и проверить не могу.
if (this.currentFrame == n) {
this.removeChild(object);
}
}
}
}
2) Про отрисовку не совсем понятно - зачем переносить на новый спрайт. Мувик тоже можно отрисовать в битмапдату.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.