伙计们,我非常惊讶在我已经追踪了一段时间的Hidden Features series中还没有Flash Hidden功能的帖子。
最近有一个AS3/Flex one,但它不是很活跃,当我在这里说AS3时,我并不是仅仅指Flash。
Hidden Feature系列非常适合那些刚接触某种语言的人。它展示了绳索和某些有价值的技巧,所有这些都在一个地方。我觉得这是个绝妙的主意。即使是专家有时也会发现他们从未听说过的诀窍。
当我开始使用Flash时,Flash IDE和与其他编程语言相比的奇怪的Flash概念让我大吃一惊。
那么,我们来看看: as a language (AS2/3)和Flash IDE的一些隐藏功能是什么
让乐趣开始吧。
发布于 2009-07-24 08:11:26
Flash IDE
与其说这是一个特性,不如说它是一个陷阱。为FLA指定文档类时,编译器不会子类化该类,而是修改该类。
当您有多个SWF具有相同的document类,并且全部加载到另一个SWF中时,这可能会导致问题(因为不能将具有相同名称的两个类并排加载到同一应用程序域中)。它会导致第一个类被加载,而第二个类使用第一个类的修改后的类,从而产生奇怪的错误(如你所想)。
解决方案是:
中
发布于 2009-07-30 09:14:42
使用数组或向量的AS3提示
最快的数组遍历方式,总是从后面
var i:int = array.length;
var item:Object;
while(i--)
{
item = array[i];
}
清除数组,
//faster than array = []
array.length = 0;
//garbage friendly
while(array.length)
{
array.pop();
}
推送和拼接
//faster than array.push();
array[array.length] = "pushed value";
//faster than splice(index, 1)
var index:int = array.indexOf(splicee);
array[index] = null;
array.splice(array.length, 1);
克隆
//fastest way to clone
var newArray:Array = array.concat();
//fastest manipulation
var mapFunction:Function = function(item:Object, index:int, source:Array):Object
{
return //your cloning or morphing here
}
var newArray:Array = array.map(mapFunction);
发布于 2009-07-26 11:11:10
MovieClip.addFrameScript()是一项未公开的ActionScript 3.0功能,它允许您指定在影片剪辑时间轴的播放头输入特定帧编号时调用的函数。
function someFunction():void {
}
movieclip_mc.addFrameScript(4,someFunction);
帧编号是从零开始的(第一帧= 0),并且只需要是整数,但是如果你想使用帧标签,你可以使用类似这样的东西:
function addFrameLabelScript(frame:String, func:Function):void{
var labels:Array = currentLabels;
for(var i:int=0;i<labels.length;i++){
if(labels[i].name == frame){
addFrameScript(labels[i].frame-1,func);
}
}
}
https://stackoverflow.com/questions/1160680
复制相似问题