首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flash开发、Flash语言(AS2/3)和Flash IDE的隐藏功能/技巧

Flash开发、Flash语言(AS2/3)和Flash IDE的隐藏功能/技巧
EN

Stack Overflow用户
提问于 2009-07-21 17:49:17
回答 23查看 7.3K关注 0票数 17

伙计们,我非常惊讶在我已经追踪了一段时间的Hidden Features series中还没有Flash Hidden功能的帖子。

最近有一个AS3/Flex one,但它不是很活跃,当我在这里说AS3时,我并不是仅仅指Flash。

Hidden Feature系列非常适合那些刚接触某种语言的人。它展示了绳索和某些有价值的技巧,所有这些都在一个地方。我觉得这是个绝妙的主意。即使是专家有时也会发现他们从未听说过的诀窍。

当我开始使用Flash时,Flash IDE和与其他编程语言相比的奇怪的Flash概念让我大吃一惊。

那么,我们来看看: as a language (AS2/3)和Flash IDE的一些隐藏功能是什么

让乐趣开始吧。

EN

回答 23

Stack Overflow用户

回答已采纳

发布于 2009-07-24 08:11:26

Flash IDE

与其说这是一个特性,不如说它是一个陷阱。为FLA指定文档类时,编译器不会子类化该类,而是修改该类。

当您有多个SWF具有相同的document类,并且全部加载到另一个SWF中时,这可能会导致问题(因为不能将具有相同名称的两个类并排加载到同一应用程序域中)。它会导致第一个类被加载,而第二个类使用第一个类的修改后的类,从而产生奇怪的错误(如你所想)。

解决方案是:

  • 为每个对文档类进行子类化的FLA创建代理类
  • 将每个SWF加载到新的子应用程序域

票数 7
EN

Stack Overflow用户

发布于 2009-07-30 09:14:42

使用数组或向量的AS3提示

最快的数组遍历方式,总是从后面

代码语言:javascript
复制
var i:int = array.length;
var item:Object;
while(i--)
{
   item = array[i];
}

清除数组,

代码语言:javascript
复制
//faster than array = []
array.length = 0;

//garbage friendly
while(array.length)
{
    array.pop();
}

推送和拼接

代码语言:javascript
复制
//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);

克隆

代码语言:javascript
复制
//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);
票数 11
EN

Stack Overflow用户

发布于 2009-07-26 11:11:10

MovieClip.addFrameScript()是一项未公开的ActionScript 3.0功能,它允许您指定在影片剪辑时间轴的播放头输入特定帧编号时调用的函数。

代码语言:javascript
复制
function someFunction():void {

}

movieclip_mc.addFrameScript(4,someFunction);

帧编号是从零开始的(第一帧= 0),并且只需要是整数,但是如果你想使用帧标签,你可以使用类似这样的东西:

代码语言:javascript
复制
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);
        }
    }
} 
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1160680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档