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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.10.2006, 14:42
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 11  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
а если юзать MOUSE_OVER\MOUSE_OUT?

Код:
package {
	import flash.display.Sprite;
	import flash.ui.ContextMenu;
	import flash.events.ContextMenuEvent;

	public class Context extends Sprite
	{
		public function Context()
		{
			addChild(new Square());
		}
	
		private function onMenuSelect(event:ContextMenuEvent):void
		{
		}
	}
}
	import flash.display.Sprite;
	import flash.events.*;;
	import flash.ui.*;
	


class Square extends Sprite
{
	public function Square()
	{
		graphics.beginFill(0xFF6600);
		graphics.drawRect(0,0,100,100);
		graphics.endFill();
		
		addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
		addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
		addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
		
		var menu:ContextMenu = new ContextMenu();
			menu.addEventListener(ContextMenuEvent.MENU_SELECT,onMenuSelect);
			menu.customItems.push(new ContextMenuItem("Hello world"));		
		contextMenu = menu;
	}
	private var cursor:Cursor = new Cursor();
	
	
	private function onMouseOver(event:MouseEvent):void
	{
		addChild(cursor);
		Mouse.hide();		
	}
	
	private function onMouseOut(event:MouseEvent):void
	{
		removeChild(cursor);
		Mouse.show()
	}
	
	private function onMouseMove(event:MouseEvent):void
	{
		cursor.x = event.localX;
		cursor.y = event.localY;
	}
	
	private function onMenuSelect(event:ContextMenuEvent):void
	{
		trace(this);
	}
}

class Cursor extends Sprite
{
	public function Cursor()
	{
		graphics.beginFill(0xFF0000);
		graphics.drawRect(0,0,10,10);
		graphics.endFill();
		
		mouseEnabled = false;
	}
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 10.10.2006, 14:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 12  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
import flash.ui.ContextMenu;
import flash.events.MouseEvent;
import flash.display.Sprite;
var sp:Sprite = new Sprite();
var cursor:Sprite = new Sprite();
var cm:ContextMenu = new ContextMenu();
var cmItem:ContextMenuItem = new ContextMenuItem('cmItem');
/////////////////
cm.customItems.push(cmItem);
/////////////////
sp.graphics.beginFill(0xFF0000);
sp.graphics.drawRect(10,10,100,100);
sp.contextMenu = cm;
/////////////////
cursor.graphics.beginFill(0x0000FF);
cursor.graphics.drawRect(0,0,10,10);
cursor.visible = false;
mouseMove = function(e:MouseEvent):void {
	e.updateAfterEvent();
}
mouseOver = function(e:MouseEvent):void {
	Mouse.hide();
	e.updateAfterEvent();
	cursor.startDrag(true);
	cursor.visible = true;
}
mouseOut = function(e:MouseEvent):void {
	Mouse.show();
	e.updateAfterEvent();
	cursor.stopDrag();
	cursor.visible = false;
}
/////////////////
this.addChild(sp);
this.addChild(cursor);
sp.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
sp.addEventListener(MouseEvent.MOUSE_OVER,mouseOver);
sp.addEventListener(MouseEvent.MOUSE_OUT,mouseOut);
Вроде работает… (Ну там, доработать надо)

Старый 10.10.2006, 14:54
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 13  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
ОФФТОП
а зачем ты во флэше импорты пишешь, там же вроде по умолчанию все импортированно? или я путаю
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 10.10.2006, 15:00
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 14  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Nirth, в вашем примере курсор мыши добавляется внутрь мувика, а значит будет обрезаться, если у мувика будет маска.
__etc, частный вариант, для произвольного мувика не подойдет, но можно сделать контейнер только для мыши, и по mouseOver делать cursor.parent.contextMenu = e.target.contextMenu; Тогда все работает, только в событии MENU_SELECT будут неправильные target, что я переживу. Этот вариант мне подходит.
Всем спасибо
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 10.10.2006, 15:02
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 15  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Nirth
ОФФТОП
а зачем ты во флэше импорты пишешь, там же вроде по умолчанию все импортированно? или я путаю
На всякий случай.

Старый 10.10.2006, 15:48
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 16  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
__etc
я уже думал, а вдруг апдейт сделали, где надо вставлять и может еще че добавили... ну ладно

2 Мерлин
Я когда писал думал, что я делаю что то не так, но не мог понять что, догадался когда увидел код etc.

В твоем случае я бы сделал некий класс ContextMenuManager, который бы следил за менюшками, и передавал бы ссылки куда надо, так как event.target все равно не даст ссылки на дисплейобжект инициатор, а на ссылку контекстного меню, то кода на много больше всеравно не будет, если я правильно понял.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

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

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


 


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


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