![]() |
|
||||||||||
|
|||||
|
[+6 17.12.12]
Регистрация: Dec 2012
Сообщений: 34
|
я хочу написать игру, которая бы каждые n сек. добавляла на поле круг, а при нажатии на любой из кругов он исчезал
с добавлением кругов я справился, var timer:Timer = new Timer(500); timer.addEventListener(TimerEvent.TIMER, on); timer.start(); function on(e:TimerEvent):void{ c.graphics.beginFill(0x000000, 0.8); c.graphics.drawCircle(500*Math.random(),400*Math.random(), 50); addChild(c); } а вот как они убрались при нажатии я без понятия... максимум что я сумел, удаляется нижний объект, при нажатии в любое место экрана |
|
|||||
|
Модрон-ветеринар
|
PinGV, код в сообщении нужно выделять соответствующими тегами.
__________________
Идите первым! |
|
|||||
|
Lorem ipsum
|
Как-то так.
import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.MouseEvent; import flash.display.Sprite; var t:Timer = new Timer(500); t.addEventListener(TimerEvent.TIMER, onTimer); t.start(); super.mouseEnabled = false; super.mouseChildren = true; super.addEventListener(MouseEvent.CLICK, onClick); function onTimer(event:TimerEvent):void { var newCircle:Sprite = new Sprite(); newCircle.graphics.beginFill(int(Math.random() * 0xffff) + 0xff0000); newCircle.graphics.drawCircle(Math.random() * 450 + 50, Math.random() * 300 + 50, Math.random() * 30 + 10); newCircle.graphics.endFill(); super.addChild(newCircle); } function onClick(event:MouseEvent):void { var sprite:Sprite = event.target as Sprite; if (sprite && sprite.parent == this) { super.removeChild(sprite); } }
__________________
Поймай яблоко 2! Последний раз редактировалось Zebestov; 15.12.2012 в 19:40. |
|
|||||
|
[+6 17.12.12]
Регистрация: Dec 2012
Сообщений: 34
|
Про теги спасибо, буду знать, Zebestov спасибо вам за код, но прошу вас по-подробнее растолковать действия функции onClick
|
|
|||||
|
получаем target из event'а, пытаемся "привести" его к Sprite, если все хорошо и у sprite есть parent, и этим парентом являемся "мы", то удаляемся из его детей
ps Вадим, отредактировал)
__________________
местонахождение |
|
|||||
|
Lorem ipsum
|
PinGV, не следует цитировать такие "полотенца", когда и так понятно, о чем твой комментарий.
Подробней: 1. слушатель, как ты можешь видеть, мы повесили не на каждый шарик (чтобы у нас все же не было "Слушатели, много слушателей"), а на контейнер, в который мы эти шарики добавляем по таймеру. 2. чтобы контейнер стал как-бы неактивным, а на мышь реагировали только его "дети", мы указали ему mouseEnabled = false и mouseChildren = true. 3. в обработчике клика мы приводим источник клика к типу Sprite и, если это таки Sprite, и у него есть родитель, и этот родитель как раз тот контейнер, в который мы бросаем шарики, мы в данном случае можем утверждать, что это шарик из контейнера и его следует удалить, что мы и делаем. Добавлено через 2 минуты Слава, я немного поменял код в обработчике, бо там какая-то ахинея получилась: как может не быть parent-а у источника клика... по крайней мере в данном случае. На самом деле я хотел сделать проверку на то, является ли parent контейнером с шариками.
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|