![]() |
|
||||||||||
|
|||||
|
4AM Games
|
а если юзать 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 и я стану писателем ^_^ |
|
|||||
|
Et cetera
Регистрация: 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);
|
|
|||||
|
4AM Games
|
ОФФТОП
а зачем ты во флэше импорты пишешь, там же вроде по умолчанию все импортированно? или я путаю
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Nirth, в вашем примере курсор мыши добавляется внутрь мувика, а значит будет обрезаться, если у мувика будет маска.
__etc, частный вариант, для произвольного мувика не подойдет, но можно сделать контейнер только для мыши, и по mouseOver делать cursor.parent.contextMenu = e.target.contextMenu; Тогда все работает, только в событии MENU_SELECT будут неправильные target, что я переживу. Этот вариант мне подходит. Всем спасибо ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
4AM Games
|
__etc
я уже думал, а вдруг апдейт сделали, где надо вставлять и может еще че добавили... ну ладно 2 Мерлин Я когда писал думал, что я делаю что то не так, но не мог понять что, догадался когда увидел код etc. В твоем случае я бы сделал некий класс ContextMenuManager, который бы следил за менюшками, и передавал бы ссылки куда надо, так как event.target все равно не даст ссылки на дисплейобжект инициатор, а на ссылку контекстного меню, то кода на много больше всеравно не будет, если я правильно понял.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|