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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 04.10.2011, 20:09
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 3  
Ответить с цитированием
savva

Регистрация: Jul 2011
Сообщений: 79
Пока что класс стрелки не чей потомок,поскольку не знаю что именно с ним делать,поэтому обратился сюда с вопросом.

ну у меня имеется класс для добавления изображения
Код AS3:
[Event(name="complete", type="flash.events.Event")]
public class ImgLoader extends EventDispatcher
{
private var loader:Loader = new Loader();
private var bitmap: BitmapData;
private var bmp:Bitmap;
private var sprBmp:Sprite = new Sprite();
 
public function ImgLoader(s:String) 
{
//Начинаем загрузку
loader.load(new URLRequest(s));
// подписываем обработчики события
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,displayImage);
} 
 
private function displayImage(evt:Event):void {
bitmap = new BitmapData(loader.width, loader.height, false, 0xFFFFFFFF);
bitmap.draw(loader.content);
bmp = new Bitmap(bitmap, "auto", true);
sprBmp.addChild(bmp);
dispatchEvent(new Event(Event.COMPLETE));
}	
public function getSprite():Sprite
{
return sprBmp;
}
}
Использую его для добавления на сцену изображений,но могу и для стрелок.
На сцену я отправляю уже готовый спрайт с изображением,хотя наверное это не правильно,лучше отправлять bitmap и уже этот bitmap добавлять на sprite в сцене

И так вот что у меня получилось
я отнаследовал стрелку от спрайта
Код AS3:
public class Pointer extends Sprite
// добавил метод добавения
	public function loadPointer():Pointer
		{
			var x:ImgLoader = new ImgLoader(srcpoint);
			x.getSprite().x = coord.x;
			x.getSprite().y = coord.y;
			addChild(x.getSprite());
			return this;
		}
ImgLoader работает исправно.

далее мне нужно определить какая стрелка была нажата на sprite, сначала покажу как добавляю стрелки на сцену и привязываю event. Сделан отдельный спрайт на который добавляются изображение и стрелки.

Код AS3:
public function Scene(_gr:Graph) 
		{
		//Начинаем загрузку
			gr = _gr;
			spim = new Sprite();
			SetImg(gr.getCurrent());
			addChild(spim);
		} 
		private function SetImg(s:Vertex):void
		{
			load = new ImgLoader(s.getImg().getSrc());
			spim.addChild(load.getSprite());
			for (var i:Number = 0; i < s.getImg().getPointers().length; i++)
			{
				s.getImg().getPointers()[i].loadPointer().addEventListener(MouseEvent.CLICK, onMouseClickSpim);
				spim.addChild(s.getImg().getPointers()[i].loadPointer());
			}
			addChild(spim);
			//spim.addEventListener(MouseEvent.CLICK, onMouseClickSpim);
		}
		private function onMouseClickSpim(e:MouseEvent):void
		{
			_parent = gr.getCurrent();
			var l:Number = 1;
			for (var i:Number=0; i < gr.getCurrent().getImg().getPointers().length; i++)
				{
					trace("for");
					if (gr.getCurrent().getImg().getPointers()[i] == e.target as Pointer)
					{
// Сюда не заходит алгоритм,проверку не производит. Как проверить на какую стрелку нажал пользователь?
 
						trace(i);
						l = l+i;
						break;
					}
				}
			gr.setCurrent(gr.getCurrent().getList().getElembyInde(l) as Vertex);
			SetImg(gr.getCurrent());
		}
	}
Проверка происходит но трейс показал следующее
Код AS3:
gr.getCurrent().getImg().getPointers()[i]= pointer
e.target as Pointer = null
e.target = Sprite
Вопрос решил путём сравнения координат.


Последний раз редактировалось savva; 05.10.2011 в 14:47.
Создать новую тему   Часовой пояс GMT +4, время: 09:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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