Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.12.2012, 18:50
PinGV вне форума Посмотреть профиль Отправить личное сообщение для PinGV Найти все сообщения от PinGV
  № 1  
Ответить с цитированием
PinGV

Регистрация: Dec 2012
Сообщений: 34
Flame Слушатели, много слушателей..

я хочу написать игру, которая бы каждые n сек. добавляла на поле круг, а при нажатии на любой из кругов он исчезал
с добавлением кругов я справился,

Код AS3:
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);
}

а вот как они убрались при нажатии я без понятия...

Код AS3:
stage.addEventListener(MouseEvent.CLICK, f);
 
function  f (e:MouseEvent):void{
if (numChildren>0){
removeChildAt(0);}
}
максимум что я сумел, удаляется нижний объект, при нажатии в любое место экрана

Старый 15.12.2012, 18:54
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
PinGV, код в сообщении нужно выделять соответствующими тегами.
__________________
Идите первым!

Старый 15.12.2012, 19:07
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Как-то так.
Код AS3:
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.
Старый 15.12.2012, 19:30
PinGV вне форума Посмотреть профиль Отправить личное сообщение для PinGV Найти все сообщения от PinGV
  № 4  
Ответить с цитированием
PinGV

Регистрация: Dec 2012
Сообщений: 34
Про теги спасибо, буду знать, Zebestov спасибо вам за код, но прошу вас по-подробнее растолковать действия функции onClick

Старый 15.12.2012, 19:36
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 5  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
получаем target из event'а, пытаемся "привести" его к Sprite, если все хорошо и у sprite есть parent, и этим парентом являемся "мы", то удаляемся из его детей

ps
Вадим, отредактировал)
__________________
местонахождение

Старый 15.12.2012, 19:39
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
PinGV, не следует цитировать такие "полотенца", когда и так понятно, о чем твой комментарий.
Подробней:

1. слушатель, как ты можешь видеть, мы повесили не на каждый шарик (чтобы у нас все же не было "Слушатели, много слушателей"), а на контейнер, в который мы эти шарики добавляем по таймеру.
2. чтобы контейнер стал как-бы неактивным, а на мышь реагировали только его "дети", мы указали ему mouseEnabled = false и mouseChildren = true.
3. в обработчике клика мы приводим источник клика к типу Sprite и, если это таки Sprite, и у него есть родитель, и этот родитель как раз тот контейнер, в который мы бросаем шарики, мы в данном случае можем утверждать, что это шарик из контейнера и его следует удалить, что мы и делаем.

Добавлено через 2 минуты
Слава, я немного поменял код в обработчике, бо там какая-то ахинея получилась: как может не быть parent-а у источника клика... по крайней мере в данном случае. На самом деле я хотел сделать проверку на то, является ли parent контейнером с шариками.
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.