![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
При попытке сделать расплывающиеся круги (код внизу сообщения) у меня в вывод выходит ошибка
ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта. at flash.display::DisplayObjectContainer/removeChild() at Function/<anonymous>() Я не понимаю что с этой ошибкой делать, причина вроде но я не уверен. Вот сам код: addEventListener(Event.ENTER_FRAME, function doIT(event:Event):void{ var currentBall:ball=new ball; currentBall.x=Math.random()*550; currentBall.y=Math.random()*400; addChild(currentBall); currentBall.addEventListener(Event.ENTER_FRAME, function doIT(event:Event):void{ var buffer:MovieClip=MovieClip(event.target); buffer.scaleX=buffer.scaleX-0.05; buffer.scaleY=buffer.scaleY-0.05; buffer.alpha=buffer.alpha-0.05; if(buffer.alpha<0.2){ buffer.removeEventListener(Event.EXIT_FRAME, doIT); removeChild(buffer); } }); } ); Если убрать строчку То всё прекрасно работает первое время. Но потом флешка тормозит и прекращает работать... Добавлено через 4 минуты Извините, нашёл ошибку. Вот так всегда, как напишешь - так найдёшь. В самом конце кода Надо написать ENTER_FRAME. Но чтобы тема не пропадала, скажите как сделать, чтобы они не соприкасались с друг с другом ![]() Последний раз редактировалось iNils; 08.12.2010 в 13:19. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Зачем здесь вообще этот код?
currentBall.addEventListener(Event.ENTER_FRAME, function doIT(event:Event):void{ var buffer:MovieClip=MovieClip(event.target); buffer.scaleX=buffer.scaleX-0.05; buffer.scaleY=buffer.scaleY-0.05; buffer.alpha=buffer.alpha-0.05; if(buffer.alpha<0.2){ buffer.removeEventListener(Event.EXIT_FRAME, doIT); removeChild(buffer); } }); |
|
|||||
|
А каким образом надо написать код, чтобы не тормозило и работало?
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
нужно использовать не больше одного (по возможности) энтер фрейма. И в его обработчике выполнять весь нужный код
|
|
|||||
|
Сейчас попробую... Спасибо
![]() Добавлено через 2 минуты addEventListener(Event.ENTER_FRAME, function doIT(event:Event):void{ var currentBall:ball=new ball; currentBall.x=Math.random()*550; currentBall.y=Math.random()*400; addChild(currentBall); var buffer:MovieClip=MovieClip(event.target); buffer.scaleX=buffer.scaleX-0.05; buffer.scaleY=buffer.scaleY-0.05; buffer.alpha=buffer.alpha-0.05; if(buffer.alpha<0.2){ buffer.removeEventListener(Event.ENTER_FRAME, doIT); removeChild(buffer) } }) ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта. at flash.display: isplayObjectContainer/removeChild()at Function/<anonymous>() Добавлено через 12 минут Мне кажется тут вообще нельзя обойтись без двух ENTER_FRAME... |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 60
|
Ну для начала стоит обратить внимание на то что баффер нигде не добавляется в дисплей лист, откуда вы его удалить то пытаетесь?
|
|
|||||
|
И как же его добавить? Помогите пожалуйста, просто не всё удаётся сразу понять.
|
|
|||||
|
Регистрация: Dec 2009
Сообщений: 60
|
Я бы предложил вам пересмотреть подход к решению задачи. Сделайте класс Waterdrop к примеру и внутри опишите логику (уменьшение альфы + все что душе угодно и уничтожение) а в энтерфрейме создавайте только объекты. И еще мне кажется с таймером кошернее будет =)
|
|
|||||
|
Я не умею всего этого, я делал это по уроку, можете написать код или помочь в написании?
|
|
|||||
|
Регистрация: Dec 2009
Сообщений: 60
|
Оу, это что за уроки такие с кучей энтерфреймов? Берите Мука и читайте, все со временем поймете. Помогать в написании не буду. Не потому, что злой, а потому, что вам это не поможет скорее всего. Да и удовольствие получите когда самостоятельно сделаете куда большее)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|