Actionscript 3 将电影剪辑数组添加到筛选器ActionScript 3
我将8台mc存储在一个阵列中,然后将它们放在舞台上。 现在我想应用到这些mc的模糊效果。 我的问题是,我不知道如何通过点击来应用模糊效果。 例如,我在舞台上有所有的mc,如果我点击其中一个,点击的那个应该有模糊效果,等等。 如何将过滤器应用于mc? 感谢您抽出时间类似的(未经测试)应该可以:Actionscript 3 将电影剪辑数组添加到筛选器ActionScript 3,actionscript-3,filter,effects,Actionscript 3,Filter,Effects,我将8台mc存储在一个阵列中,然后将它们放在舞台上。 现在我想应用到这些mc的模糊效果。 我的问题是,我不知道如何通过点击来应用模糊效果。 例如,我在舞台上有所有的mc,如果我点击其中一个,点击的那个应该有模糊效果,等等。 如何将过滤器应用于mc? 感谢您抽出时间类似的(未经测试)应该可以: package { //Imports import flash.events.MouseEvent; import flash.filters.BlurFilter; /
package
{
//Imports
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
//Class
public function ClickToBlur
{
//Variables
private var clickableObjects:Array;
//Constructor
public function ClickToBlur(clickableObjects:Array)
{
this.clickableObjects = clickableObjects;
init();
}
//Initialize
private function init():void
{
for each (var object:Object in clickableObjects)
{
object.addEventListener(MouseEvent.CLICK, clickMouseEventHandler);
}
}
//Click Mouse Event Handler
private function clickMouseEventHandler(evt:MouseEvent):void
{
if (evt.currentTarget.filters == [])
{
evt.currentTarget.filters = [new BlurFilter()];
}
else
{
evt.currentTarget.filters = [];
}
}
//Dispose
public function dispose():void
{
for each (var object:Object in clickableObjects)
{
object.removeEventListener(MouseEvent.CLICK, clickMouseEventHandler);
}
}
}
}
只需将数组传递给类的新实例
var ctb:Object = new ClickToBlur(myArrayOfObjects);
并在完成以下操作后进行清理:
ctb.dispose();
因为它们都是电影剪辑,所以您应该使用向量而不是数组。您可以在mc的数组中循环,并在每个片段上添加事件侦听器:
var mcArrayLength:int = mcArray.length();
for (var i:int = 0; i < mcArrayLength; i++) {
var mc:MovieClip = mcArray[i] as MovieClip;
mc.addEventListener(MouseEvent.CLICK, onMcClick);
}
当然,如果您一次只想有一个模糊mc,您应该保留对它的引用,并在单击另一个mc后删除模糊:
var currentlyClickedMc:MovieClip;
function onMcClick(e:MouseEvent):void
{
var clickedMc:MovieClip = e.currentTarget as MovieClip;
clickedMc.filters = [myBlurFilter];
if (currentlyClickedMc) currentlyClickedMc.filters = [];
currentlyClickedMc = clickedMc;
}
你有一个
=
,你想要一个==
修复;)。。。但仍然未经测试:pDo这段代码有错误吗?您是否正确定义了BlurFilter
的属性以查看单击的MC的视觉差异?你能展示完整的源代码吗?我已经做了。我对“currentTarget”和“.target”有一个问题,所以它只在我使用“target”而不是“currentTarget”时起作用。你能给我解释一下如何为我的mc做父母吗?我的意思是被点击的mc应该在前台。假设您的mc有一个名为container
的父级。在这种情况下,每次单击MC时,您都应该将此MC重新添加到父级(这会将MC移动到显示列表的顶部)。这个代码应该放在onMcClick
函数中:container.addChild(clickedMc)
你能告诉我如何为每个mc分配一个数字吗?因为当mc在网格上的顺序正确时,应该显示一些内容。或者如果你有一个想法我怎么做谢谢你对不起,我不明白你想达到什么目的。但对于简单的编号,您可以将MC的name
属性设置为所需的数字,转换为String
,例如:myMC.name=myNumber.toString()代码>
var currentlyClickedMc:MovieClip;
function onMcClick(e:MouseEvent):void
{
var clickedMc:MovieClip = e.currentTarget as MovieClip;
clickedMc.filters = [myBlurFilter];
if (currentlyClickedMc) currentlyClickedMc.filters = [];
currentlyClickedMc = clickedMc;
}