Actionscript 3 Flash as3-从点击事件实例创建变量
我有一大堆按钮,它们都需要有鼠标悬停效果和切换效果(点击)来改变色调。我已经为每个色调的变化,这部分工作相当好的功能。可悲的是,我不知道如何让我的切换功能正常工作 下面是我的切换按钮代码。它工作正常,只是我的变量是全局变量,而不是实例的特定变量。因此,它只在我只有一个按钮的情况下工作。如何将其更改为使用一个用于焦点中的一个按钮的变量 提前谢谢Actionscript 3 Flash as3-从点击事件实例创建变量,actionscript-3,flash,Actionscript 3,Flash,我有一大堆按钮,它们都需要有鼠标悬停效果和切换效果(点击)来改变色调。我已经为每个色调的变化,这部分工作相当好的功能。可悲的是,我不知道如何让我的切换功能正常工作 下面是我的切换按钮代码。它工作正常,只是我的变量是全局变量,而不是实例的特定变量。因此,它只在我只有一个按钮的情况下工作。如何将其更改为使用一个用于焦点中的一个按钮的变量 提前谢谢 var primary = false; function clickOn(e:MouseEvent):void{ if (primary =
var primary = false;
function clickOn(e:MouseEvent):void{
if (primary == false) {
greenHue(e.target);
primary = true;
} else {
noHue(e.target);
primary = false;
}
}
实际上,这取决于您如何为应用程序选择设计。我的意思是,如果你有一个数量有限的按钮,你知道它们是什么,并且它们保持不变(比如,按钮1,按钮2,按钮3或色调,饱和度和光线),你可以有三个切换变量。所以你想做:
var primaryH = false;
var primaryS = false;
var primaryL = false;
然后,三个事件声明:
buttonH.addEventListener(MouseEvent.CLICK, clickOnH);
buttonS.addEventListener(MouseEvent.CLICK, clickOnS);
buttonL.addEventListener(MouseEvent.CLICK, clickOnL);
function clickOnH(e:MouseEvent):void{
if (primaryH == false) {
greenHue(e.target);
primaryH = true;
} else {
noHue(e.target);
primaryH = false;
}
}
以及三个功能声明:
buttonH.addEventListener(MouseEvent.CLICK, clickOnH);
buttonS.addEventListener(MouseEvent.CLICK, clickOnS);
buttonL.addEventListener(MouseEvent.CLICK, clickOnL);
function clickOnH(e:MouseEvent):void{
if (primaryH == false) {
greenHue(e.target);
primaryH = true;
} else {
noHue(e.target);
primaryH = false;
}
}
否则,最好是在button对象中创建toggle变量和函数。这将是“更面向对象的”,并允许您创建任意多的按钮,而无需反复编写相同的内容。最好的做法是扩展用于按钮的类并向其添加函数,以便从中派生的所有按钮都具有您想要的idependant行为
class ColoredButton extends Button {
var primary = false;
public function ColoredButton() {
this.addEventListener(MouseEvent.CLICK, clickOn);
}
private function clickOn(e:MouseEvent):void {
if (primary == false) {
greenHue(e.target);
primary = true;
} else {
noHue(e.target);
primary = false;
}
}
...
}
这就是我所做的
var primary:Array = new Array;
if (primary[e.target.name] == true || secondary[e.target.name] == true) {
noHue(e.target);
primary[e.target.name] = false;
} else {
greenHue(e.target);
primary[e.target.name] = true;
}
}
}
这似乎是一个很好的解决方案,但问题是我需要为按钮存储它,因为当鼠标离开按钮时,它需要保留正确的颜色。我希望我可以从实例的名称创建一个变量,如下所示。var e.target.name+“primary”=真;您必须将鼠标悬停事件移动到扩展代码中,就在click事件下面,它将分别为每个实例运行,而不会对其他实例造成干扰。请在问题中发布您的更新代码。谢谢您的代码。我最终设置了var primary:Array=newarray;然后使用primary[e.target]引用它。如果你解决了你的问题并且不想在这个问题上得到更多的反馈,请将你的解决方案作为答案发布,并将其标记为正确。