如何保存事件监听器
how to save event Listeners
我正在尝试使用共享对象,但我不知道
我如何保存事件侦听器(例如,如果之前已经删除了鼠标事件
保存)。
假设 "onThis" 函数删除鼠标事件
function onThis(event:MouseEvent):void
{
levAll.theLev.gotoAndStop(2);
boxAll.levHit.removeEventListener(MouseEvent.CLICK, onLevHit);
}
//save function
function onSaveBtn(event:MouseEvent):void
{
sharedObject.data.levData = levAll.theLev.currentFrame;
// save that boxAll.levHit mouse event removed
}
//load function
function onLoadBtn(event:MouseEvent):void
{
levAll.theLev.gotoAndStop(sharedObject.data.levData);
// load that boxAll.levHit mouse event removed
}
阿米尔,对不起,我刚看到你的回答,但我不知道如何使用
您在完整项目中的代码示例。我尝试了以下代码(请参阅编辑)。虽然它看起来不是很优雅,但它确实有效,特别是如果我将它用于我拥有的所有听众。你能给我举个例子吗?谢谢!*
EDIT
//public class
var hiton:Boolean;
//initialization
hiton = true;
boxHit.panel.addEventListener(MouseEvent.CLICK, onBoxPanel);
boxHit.addEventListener(MouseEvent.CLICK, onBoxHit);
saveBtn.addEventListener(MouseEvent.MOUSE_DOWN, onSaveBtn);
loadBtn.addEventListener(MouseEvent.MOUSE_DOWN, onLoadBtn);
// functions
function onBoxPanel(event:MouseEvent):void
{
hiton = false;
}
function onBoxHit(event:MouseEvent):void
{
if(hiton){
//do something
}
}
function onSaveBtn(event:MouseEvent):void
{
sharedObject.data.hitData = hiton;
}
function onLoadBtn(event:MouseEvent):void
{
hiton = sharedObject.data.hitData;
}
我不确定我是否完全理解它,但也许
var EventExists:Boolean ;
EventExists=boxAll.hasEventListener(MouseEvent.CLICK);
sharedObject.data.levData = EventExists;
您永远不需要 "save" 您的事件侦听器以您描述的方式共享对象中的某些按钮;你一定是从错误的角度来处理这个问题。
很难说你应该做什么,因为你还没有真正解释你想要完成什么,你的变量名和函数名也没有意义。但是,一般来说,您要做的是保存按钮交互的对象的状态,并根据该状态添加或删除事件侦听器。
function onThis(event:MouseEvent):void
{
levAll.theLev.gotoAndStop(2);
boxAll.levHit.removeEventListener(MouseEvent.CLICK, onLevHit);
boxAll.levHit.wasClicked = true;
}
function onSaveBtn(event:MouseEvent):void
{
sharedObject.data.levData = levAll.theLev.currentFrame;
sharedObject.data.clickedLevHit = boxAll.levHit.wasClicked;
}
function onLoadBtn(event:MouseEvent):void
{
hiton = sharedObject.data.hitData;
if (!sharedObject.data.clickedLevHit) {
boxAll.levHit.addEventListener(MouseEvent.CLICK, onLevHit);
}
}
我正在尝试使用共享对象,但我不知道 我如何保存事件侦听器(例如,如果之前已经删除了鼠标事件 保存)。 假设 "onThis" 函数删除鼠标事件
function onThis(event:MouseEvent):void
{
levAll.theLev.gotoAndStop(2);
boxAll.levHit.removeEventListener(MouseEvent.CLICK, onLevHit);
}
//save function
function onSaveBtn(event:MouseEvent):void
{
sharedObject.data.levData = levAll.theLev.currentFrame;
// save that boxAll.levHit mouse event removed
}
//load function
function onLoadBtn(event:MouseEvent):void
{
levAll.theLev.gotoAndStop(sharedObject.data.levData);
// load that boxAll.levHit mouse event removed
}
阿米尔,对不起,我刚看到你的回答,但我不知道如何使用 您在完整项目中的代码示例。我尝试了以下代码(请参阅编辑)。虽然它看起来不是很优雅,但它确实有效,特别是如果我将它用于我拥有的所有听众。你能给我举个例子吗?谢谢!*
EDIT //public class var hiton:Boolean; //initialization hiton = true; boxHit.panel.addEventListener(MouseEvent.CLICK, onBoxPanel); boxHit.addEventListener(MouseEvent.CLICK, onBoxHit); saveBtn.addEventListener(MouseEvent.MOUSE_DOWN, onSaveBtn); loadBtn.addEventListener(MouseEvent.MOUSE_DOWN, onLoadBtn); // functions function onBoxPanel(event:MouseEvent):void { hiton = false; } function onBoxHit(event:MouseEvent):void { if(hiton){ //do something } } function onSaveBtn(event:MouseEvent):void { sharedObject.data.hitData = hiton; } function onLoadBtn(event:MouseEvent):void { hiton = sharedObject.data.hitData; }
我不确定我是否完全理解它,但也许
var EventExists:Boolean ;
EventExists=boxAll.hasEventListener(MouseEvent.CLICK);
sharedObject.data.levData = EventExists;
您永远不需要 "save" 您的事件侦听器以您描述的方式共享对象中的某些按钮;你一定是从错误的角度来处理这个问题。
很难说你应该做什么,因为你还没有真正解释你想要完成什么,你的变量名和函数名也没有意义。但是,一般来说,您要做的是保存按钮交互的对象的状态,并根据该状态添加或删除事件侦听器。
function onThis(event:MouseEvent):void
{
levAll.theLev.gotoAndStop(2);
boxAll.levHit.removeEventListener(MouseEvent.CLICK, onLevHit);
boxAll.levHit.wasClicked = true;
}
function onSaveBtn(event:MouseEvent):void
{
sharedObject.data.levData = levAll.theLev.currentFrame;
sharedObject.data.clickedLevHit = boxAll.levHit.wasClicked;
}
function onLoadBtn(event:MouseEvent):void
{
hiton = sharedObject.data.hitData;
if (!sharedObject.data.clickedLevHit) {
boxAll.levHit.addEventListener(MouseEvent.CLICK, onLevHit);
}
}