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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.09.2009, 13:52
dmitry_kiv вне форума Посмотреть профиль Отправить личное сообщение для dmitry_kiv Найти все сообщения от dmitry_kiv
  № 1  
Ответить с цитированием
dmitry_kiv
[+6 04.04.09]

Регистрация: Apr 2009
Сообщений: 32
По умолчанию Mouse_Over вместо CLICK, помогите разобраться с кодом.

Здравствуйте!
Делаю схему этажей торгового центра. С помощью программиста добились такого результата:
http://dmitry-design.ru/shema/shema.swf

есть два файла с кодом.

note.as

Код AS3:
 
package{
	import flash.display.*;
	import flash.events.*;
	//
	public class Note extends MovieClip{
		public function Note():void{
			this.buttonMode=true;
			this.mouseChildren=false;
			addEventListener(MouseEvent.CLICK,onClick);
		}
		private function onClick(event:MouseEvent):void{
			removeEventListener(MouseEvent.CLICK,onClick);
			if(parent)
				parent.removeChild(this);
		}
	}
}

и main.as

Код AS3:
 
package{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	//
	public class Main  extends MovieClip{
		private var xmlLoader:URLLoader= new URLLoader;
		private var imgMap:MovieClip=null;
		private var top:Sprite= new Sprite;
		//
		public function Main():void{
			addChild(top);
			btn0.buttonMode=true;
			btn0.addEventListener(MouseEvent.CLICK,onClick0);
			btn1.buttonMode=true;
			btn1.addEventListener(MouseEvent.CLICK,onClick1);
			btn2.buttonMode=true;
			btn2.addEventListener(MouseEvent.CLICK,onClick2);
			btn3.buttonMode=true;
			btn3.addEventListener(MouseEvent.CLICK,onClick3);
			btn4.buttonMode=true;
			btn4.addEventListener(MouseEvent.CLICK,onClick4);
			btn5.buttonMode=true;
			btn5.addEventListener(MouseEvent.CLICK,onClick5);
			xmlLoader.addEventListener(Event.COMPLETE,onXmlComplete);
			xmlLoader.addEventListener(IOErrorEvent.IO_ERROR,onXmlIOError);
			btn0.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
		}
		private function onClick0(event:MouseEvent):void{
			show('0.xml',Map0);
		}
		private function onClick1(event:MouseEvent):void{
			show('1.xml',Map1);
		}
		private function onClick2(event:MouseEvent):void{
			show('2.xml',Map2);
		}
		private function onClick3(event:MouseEvent):void{
			show('3.xml',Map3);
		}
		private function onClick4(event:MouseEvent):void{
			show('4.xml',Map4);
		}
		private function onClick5(event:MouseEvent):void{
			show('5.xml',Map5);
		}
		private function show(fileName:String,map:Class):void{
			xmlLoader.load(new URLRequest(fileName));
			if(imgMap && imgMap.parent)
				removeChild(imgMap);
			imgMap=null;
			var mc:MovieClip= new map;
			addChildAt(mc,0);
			imgMap=mc;
		}
		private function onXmlComplete(event:Event):void{
			var xml:XML= XML(event.target.data);
			while(top.numChildren>0)
				top.removeChildAt(0);
			for each(var point:XML in xml.point){
				var s:Spot= new Spot(point);
				s.x=point.@x;
				s.y=point.@y;
				top.addChild(s);
				s.addEventListener(MouseEvent.CLICK,onSpotClick);
			}
		}
		private function onXmlIOError(event:IOErrorEvent):void{
			trace(event.text);
		}
		private function onSpotClick(event:MouseEvent):void{
			var spot:Spot= event.target as Spot;
			var note:Note= new Note;
 
			note.tf.text=spot.item.note;
			note.x=Math.round((stage.stageWidth-note.width)/2);
			note.y=Math.round((stage.stageHeight-note.height)/2);
			addChild(note);
		}
	}
}
import flash.display.*;
 
class Spot extends Sprite{
	public var item:XML;
	public function Spot(item:XML):void{
		this.item=item;
		this.graphics.beginFill(0xff0000,0.0);
		this.graphics.drawRect(0,0,item.@width,item.@height);
		this.graphics.endFill();
		this..buttonMode=true;
	}
}

Я хочу стобы клип note появлялся при Mouse_Over и исчезал соответственно. Плюс хотел чтоб книп появлялся в месте наведения мыши.

Пробовал вставить значения Mouse._x и Mouse._y но не работает.

Подскажите где править код, в as3 не силен.

Спасибо.

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
евенты:
ROLL_OVER - при наведении
ROLL_OUT - при "отведении"
координаты:
event.stageX
event.stageY
__________________
я могу стать всем, если только захочу

Старый 16.09.2009, 15:31
dmitry_kiv вне форума Посмотреть профиль Отправить личное сообщение для dmitry_kiv Найти все сообщения от dmitry_kiv
  № 3  
Ответить с цитированием
dmitry_kiv
[+6 04.04.09]

Регистрация: Apr 2009
Сообщений: 32
Felicast спасибо.
Я изменил код:

Функция в файле main.as
Код AS3:
 
private function onXmlComplete(event:Event):void{
			var xml:XML= XML(event.target.data);
			while(top.numChildren>0)
				top.removeChildAt(0);
			for each(var point:XML in xml.point){
				var s:Spot= new Spot(point);
				s.x=point.@x;
				s.y=point.@y;
				top.addChild(s);
				s.addEventListener(MouseEvent.ROLL_OVER,onSpotClick);
			}
		}
Файл note.as

Код AS3:
 
package{
	import flash.display.*;
	import flash.events.*;
	//
	public class Note extends MovieClip{
		public function Note():void{
			this.buttonMode=true;
			this.mouseChildren=false;
			addEventListener(MouseEvent.ROLL_OUT,onClick);
		}
		private function onClick(event:MouseEvent):void{
			removeEventListener(MouseEvent.CLICK,onClick);
			if(parent)
				parent.removeChild(this);
		}
	}
}
Все работает соответственно коду, но, сейчас клип note исчезает только при условии если курсор мыши был "отведен" с него. Хотелось бы чтоб он исчезал при отведении мыши с активной области.
вот сейчас как работает - http://dmitry-design.ru/shema/shema.swf

Подскажите что исправить?.. никак не могу сам понять.

Старый 16.09.2009, 17:26
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 4  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
Ивенты должны быть прикручены к активным областям. Когда наводите на них мышью, создаётся экземпляр класса note с нужным текстом и тут же этот экземпляр добавляется в display object. Как только вы отводите мышку срабатывает Rollout и экземпляр ноут просто стирается, с вынисением из display object

Старый 16.09.2009, 17:41
dmitry_kiv вне форума Посмотреть профиль Отправить личное сообщение для dmitry_kiv Найти все сообщения от dmitry_kiv
  № 5  
Ответить с цитированием
dmitry_kiv
[+6 04.04.09]

Регистрация: Apr 2009
Сообщений: 32
willis83 вот в этом и вопрос. как прикрутить ивент Roll_OUT к активной области а не к мувику note?

Старый 16.09.2009, 17:50
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 6  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
точно также как к ноуту. или у вас это рисованные кнопки??

Старый 16.09.2009, 19:04
dmitry_kiv вне форума Посмотреть профиль Отправить личное сообщение для dmitry_kiv Найти все сообщения от dmitry_kiv
  № 7  
Ответить с цитированием
dmitry_kiv
[+6 04.04.09]

Регистрация: Apr 2009
Сообщений: 32
willis83 нет, кнопки не рисованные. По каждому этажу есть *.xml файл с координатами активных зон. Из этих файлов карта формируется.
В этом сложность, пытался сделать по аналогии с участком кода где Roll_Over описывается, так не получается. Где то ошибку делаю..


Тема все еще актуальна. Подскажите пожалуйста.


Последний раз редактировалось dmitry_kiv; 18.09.2009 в 19:09.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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