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

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

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

Регистрация: Mar 2013
Сообщений: 1
Thumbs up Привязка события

Добрый день,не так давно начал изучать as3 и пока что проблем как таковых не возникало,но вот недавно я попытался нарисовать прямоугольник(динамически) и повесить на него слушатель событий,код компилируется и выполняется ,но вот само событие не происходит,подскажите пожалуйста
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.display.Shape;
 
 
/**
     * @author Maxim
     */
	public class GameView extends Sprite
	{
		public static const CELL_WIDTH:int = 30;
		private var _rows:int = 20;
		private var _columns:int = 20;
		private var _width:int;
		private var _height:int;
		private var mainShape : Shape = new Shape();
		private var rest : Shape = new Shape();
		private var menu : Shape = new Shape();
 
 
 
 
		public function GameView ()
		{
			_width = _columns * CELL_WIDTH;
			_height = _rows * CELL_WIDTH;
			init ();
                                 stage.addEventListener(MouseEvent.CLICK,MouseClicked);//работает
                                 mainShape.addEventListener(MouseEvent.CLICK,MouseClicked);//не работает
//была задумка что проблема в глубине т.к у mainshape глубина = 0,но 
                                 menu.addEventListener(MouseEvent.CLICK,MouseClicked);//не работает
//хотя находиться и на 3 уровне глубины(самый верхний)
		}
 
 
		private function MouseClicked (e:MouseEvent):void
		{
			trace (Math.floor(e.localY/CELL_WIDTH)+":"+Math.floor(e.localX/CELL_WIDTH));
 
		}
 
		private function init ():void
		{
			Init_MainShape ();
			Init_rest ();
 
		}
 
		private function Init_MainShape ():void
		{
			mainShape.graphics.beginFill (0xEEEEEE);
			mainShape.graphics.lineStyle (2.0);
			mainShape.graphics.drawRect (0, 0, _height, _width);
			mainShape.graphics.endFill ();
			addChild (mainShape);
 
		}
		private function Init_rest ():void
		{
			menu.graphics.beginFill (0xEEEEEE);
			menu.graphics.lineStyle (2.0);
			menu.graphics.drawRect (_columns*CELL_WIDTH+20,0,157,362);
 
			rest.graphics.lineStyle (1.0, 0x999999);
			for (var i: int = 1; i < _columns; i++)
			{
				rest.graphics.moveTo (i * CELL_WIDTH, 0);
				rest.graphics.lineTo (i * CELL_WIDTH, _height);
			}
 
			for (i = 1; i < _rows; i++)
			{
				rest.graphics.moveTo (0, i * CELL_WIDTH);
				rest.graphics.lineTo (_width, i * CELL_WIDTH);
			}
			rest.graphics.endFill ();
			addChild (rest);
			addChild(menu);
 
		}
	}
}
И ещё подскажите как лучше делать в такой ситуации создавать интерфейс динамически или всё таки с помощью стандартных компонентов?За ранее спасибо

Старый 08.03.2013, 22:35
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 2  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Если вы слушаете сцену на предмет клика, то нет смысла слушать дочерние объекты DisplayObject на сиё, добавленные в список отображения

Код AS3:
public function GameView ()
{
	_width = _columns * CELL_WIDTH;
	_height = _rows * CELL_WIDTH;
	init ();
    stage.addEventListener(MouseEvent.CLICK,MouseClicked);//работает
}
 
 
private function MouseClicked (e:MouseEvent):void
{
	trace (Math.floor(e.currentTarget.localY/CELL_WIDTH)+":"+Math.floor(e.currentTarget.localX/CELL_WIDTH));
}

Старый 09.03.2013, 00:03
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 3  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
private var mainShape : Shape = new Shape();
private var menu : Shape = new Shape();
mainShape.addEventListener(MouseEvent.CLICK,MouseClicked);//не работает
menu.addEventListener(MouseEvent.CLICK,MouseClicked);//не работает
Shape не является наследником InteractiveObject — проще говоря, не реагирует на мышь (в отличие от спрайта, например).
__________________
Reality.getBounds(this);

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

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

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


 


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


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