![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2014
Сообщений: 27
|
Приветствую всех.
Я новичок и это мой первый пост на форуме. Столкнулся с задачей, для которой нашел на форуме решение: Удалить объект из массива по клику на него на сцене - http://www.flasher.ru/forum/showthread.php?t=206342 Немного изменив код под себя, столкнулся с ошибкой: ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта. at flash.display::DisplayObjectContainer/removeChild() at Main/mouseClickHandler() Привожу код: package { import flash.display.MovieClip; import flash.events.MouseEvent; public class Main extends MovieClip { var objectList:Array = new Array(); public function Main() { var A:a = new a(); objectList.push(A); addChild(A); A.x = 0; A.y = 0; var B:b = new b(); objectList.push(B); addChild(B); B.x = 150; B.y = 0; var C:c = new c(); objectList.push(C); addChild(C); C.x = 300; C.y = 0; stage.addEventListener(MouseEvent.CLICK, mouseClickHandler); } function mouseClickHandler(event:MouseEvent) { var currObj:MovieClip = event.target as MovieClip; if (currObj) { removeChild(currObj); objectList.splice(objectList.indexOf(currObj), 1); } } } } Последний раз редактировалось lesnoj; 13.03.2014 в 16:25. |
|
|||||
|
Скорее всего у вас есть вложенные визуальные элементы, которые реагируют на мышь, внутри ваших A B C.
Попробуйте написать: |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 836
|
Не уверен, но когда у меня была подобная проблема, я удалял слушатель и объект. В итоге объект удалялся без ошибок
|
|
|||||
|
Регистрация: Mar 2014
Сообщений: 27
|
Работает со следующим кодом:
function mouseClickHandler(event:MouseEvent) { var currObj:MovieClip = event.target as MovieClip; if (currObj) { var displayObject:DisplayObject = (DisplayObject) (event.target); displayObject.parent.removeChild(displayObject); objectList.splice(objectList.indexOf(currObj), 1); } } Так же работают все предложенные варианты. Спасибо. |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
не понятно только зачем 2 раза делать преобразование типов, и по хорошему нужно знать родителя, чтобы не было такой записи
|
|
|||||
|
Что это за хрень? ) В ас3 приведение к типу делается не так, а так:
|
|
|||||
|
Регистрация: Mar 2014
Сообщений: 27
|
Подскажите, какие корректировки нужно внести, чтобы вместо удаления, происходило проигрывание анимации MC, по которому был совершен клик? И если будет не трудно, то прокомментируйте пожалуйста каждую строку подробно.
function mouseClickHandler(event:MouseEvent) { var currObj:MovieClip = event.target as MovieClip; if (currObj) { var displayObject:DisplayObject = event.target as DisplayObject; displayObject.parent.removeChild(displayObject); } } Такое ощущение что не хватает ни конкретного, а обобщенного понимания, как в нем все устроено. |
|
|||||
|
|
|
|||||
|
Регистрация: Mar 2014
Сообщений: 27
|
Последний раз редактировалось lesnoj; 13.03.2014 в 18:32. |
|
|||||
|
Цитата:
Цитата:
Цитата:
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|