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

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

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

Регистрация: Nov 2004
Адрес: Кстово
Сообщений: 54
По умолчанию Прослушивание события со сцены из класса.

Суть задачи - есть класс (расширение мувиклипа). В этом классе нужно чтобы событие наведения мыши передавалось в основной ролик с параметрами. То есть к примеру при наведении на область появлялось меню - "такая то область выделена с такими то параметрами" (передается из объекта только описание а в основном мувике разборка идет через case) Весь мозг уже изломал. Не хочется писать кривой код, ибо знаю что это можно написать в одном месте. На данный момент имеется
Код AS3:
import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import com.greensock.*;
	import com.greensock.easing.*;
	import com.greensock.plugins.*;
	public class Oblast extends MovieClip
	{
		var regionNum:int;
		var index:int;
		public function Oblast()
		{
			this.red_mc.alpha = 0;
			regionNum = int(this.name.substring(4,6));
			this.addEventListener(MouseEvent.MOUSE_OVER, mOver);
			this.addEventListener(MouseEvent.MOUSE_OUT, mUp);
			this.addEventListener(MouseEvent.CLICK, mClick);
			this.buttonMode = true;
			this.useHandCursor = true;
 
		}
		public function mOver(e:MouseEvent):void
		{
			regionUp();
		}
		public function mUp(e:MouseEvent):void
		{
			regionDown();
		}
		public function mClick(e:MouseEvent):void
		{
 
		}
		public function regionUp()
		{
			this.parent.setChildIndex(this,this.parent.numChildren-2);
			TweenLite.to(this, 0.5, {scaleX:1.1, scaleY:1.1, ease:Quad.easeOut});
			TweenLite.to(this.red_mc, 0.5, {alpha:1, ease:Quad.easeOut});			
		}
		public function regionDown()
		{
			TweenLite.to(this, 0.5, {scaleX:1, scaleY:1, ease:Quad.easeOut});
			TweenLite.to(this.red_mc, 0.5, {alpha:0, ease:Quad.easeOut});
		}
	}
regionNum = int(this.name.substring(4,6)); в этой строчке я получаю необходимый индекс из описания клипа - его и нужно отправить событием

Старый 22.12.2011, 21:37
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 2  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Цитата:
Не хочется писать кривой код
Учитывая вышеописанное, он уже кривой.
По теме: используйте свое событие.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

Регистрация: Nov 2004
Адрес: Кстово
Сообщений: 54
Насчет кривости согласен. В общем смотрите что я сделал:
Создал свой класс MapEvent
Код AS3:
package org.event
{
	import flash.events.Event;
	public class MapEvent extends Event
	{
		public var num:int;
		public function MapEvent(type:String,n:int)
		{
			super(type);
			num = n;
		}
 
	}
 
}
Далее я регистрирую в классе переменную ev. и делаю дисптатч события при наведении мышки. Посылаю в файл переменную num=3
Код AS3:
var ev:MapEvent = new MapEvent("mapOver",3);
public function Oblast()
		{
			this.red_mc.alpha = 0;
			regionNum = int(this.name.substring(4,6));
			this.addEventListener(MouseEvent.MOUSE_OVER, mOver);
			this.addEventListener(MouseEvent.MOUSE_OUT, mUp);
			this.addEventListener(MouseEvent.CLICK, mClick);
			this.buttonMode = true;
			this.useHandCursor = true;
 
		}
		public function mOver(e:MouseEvent):void
		{
			regionUp();
 
			dispatchEvent(ev);
		}
В овновном коде использую метод addEventListener:
Код AS3:
stage.addEventListener("mapOver",fOver);
function fOver(e:MapEvent)
{
	trace(e.num);
}
- и ничего не работает. Не пойму в чем дело.

Добавлено через 3 часа 22 минуты
Все разобрался сам. Тему можно закрывать.

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

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

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


 


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


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