|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2011
Адрес: Омск
Сообщений: 6
|
Как удалить объект со сцены по окончанию Tween?
Помогите, пожалуйста, новичку. Не получается удалить объект со сцены, в таком случае:
var bar2:bar1=new bar1(); stage.addChild(bar2); barX = new Tween(bar2,"x",Back.easeOut,2,100,1,true); barX.addEventListener(TweenEvent.MOTION_FINISH,bbb); function bbb(e:TweenEvent) { stage.removeChild(DisplayObject(bar2)); } Выдаёт ошибку ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта. at flash.display::DisplayObjectContainer/removeChild() at array_remove_fla::MainTimeline/aaa() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at fl.transitions::Tween/set time() at fl.transitions::Tween/nextFrame() at fl.transitions::Tween/onEnterFrame() Удаления типа bar2.parent.removeChild(DisplayObject(bar2)) не работает и проверка с помощью contains() также. Последний раз редактировалось iNils; 05.02.2011 в 20:19. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Feb 2011
Адрес: Омск
Сообщений: 6
|
Спасибо, что откликнулись, но к сожалению не работает, ошибка та же.
|
|
|||||
Регистрация: Feb 2011
Адрес: Омск
Сообщений: 6
|
i.o., прошу прощения этот вариант работает! Огромное спасибо за помощь!
iNils, думаю в таком случае вопрос не актуален, но выдаёт [object bar1] |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Аварийное решение заключается в том, чтобы удалять объект из его родителя, не важно, кто это. Т.е., примерно так:
Но вообще-то, я не советую так поступать. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Lazura, всегда пожалуйста
mikhailk, а такое разве скомпилируется?
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
i.o., а почему такое не должно скомпилироваться?
Другое дело, что это бросит RTE =)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
ок, напутал с классом
вот рабочий код: package { import flash.display.*; import flash.events.*; public class Main extends Sprite { private var sprite1:Sprite; private var sprite2:Sprite; private var sprite3:Sprite; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point sprite1 = new Sprite(); setRandomRectangle(sprite1); addChild(sprite1); sprite2 = new Sprite(); setRandomRectangle(sprite2); sprite1.addChild(sprite2); sprite3 = new Sprite(); setRandomRectangle(sprite3); sprite2.addChild(sprite3); addEventListener(MouseEvent.CLICK, onMouseClick); } private function onMouseClick(e:MouseEvent) : void { anyObjectRemover(sprite3); anyObjectRemover(sprite2); anyObjectRemover(sprite1); } private function anyObjectRemover(obj:Sprite) : void { var parentObj:Sprite = obj.parent as Sprite; parentObj.removeChild(obj); } private function setRandomRectangle(sprite:Sprite) : void { sprite.graphics.beginFill(Math.random() * 10000000); sprite.graphics.drawRect(Math.random() * 100, Math.random() * 100, Math.random() * 300, Math.random() * 300); sprite.graphics.endFill(); } } } Последний раз редактировалось mikhailk; 05.02.2011 в 23:02. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
mikhailk, в принципе достаточно было указать DisplayObjectContainer. Однако не поленился целый пример написать
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 05.02.2011 в 23:05. |
Часовой пояс GMT +4, время: 15:58. |
|
« Предыдущая тема | Следующая тема » |
Теги |
removeChild , tween |
|
|