| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

mtasc一个月使用经验小结           

mtasc一个月使用经验小结

作者:佚名 来源:不详 更新:2007-1-13 20:46:15 错误报告 我要投稿
对mtasc的测试:
2.1对v2component 不支持.

2.2对跨了两个文件夹域的类好像得不到~~~

2.3对内部类的成员对象的测试情况一点也不好,看来这个还是只适用于测试之用。

2.4
不需要再针对嵌套函数使用thisP(private static var thisP:Object)指针了,但也支持的.好像只能在setInterval里使用.
可以直接访问到

class B
{
public function B()
{
var p:Number=1;
_root.onEnterFrame=function():Void
{
p++;
_root.txtA.text=p;
}
}
}

txt文本框里跳动着我们想要的累加的数字。

这其实并不合理,局部变量竟然可以访问,但权且这样凑合着用哈~~~

2.5

txt1.text=clearInterval(thisP.ID); //这个被认为是error
clearInterval(thisP.ID);//OK.

2.6尽管setInterval及_root.onEnterFrame把当前的作用域给改变了,但用thisP+privateMvalue依旧可以访问到类中的
私有类型成员.

2.7好像不太支持函数对象的样子的说.只支持传统的匿名函数.

3Interval是否可以删除自己?答,可以。

class SetInterTest
{
public var p:Number;
static private var thisP:Object;
private var ID:Number=0;
public function main():Void
{ thisP=this;
this.p=1;

for(var i=0;i<11;i++)
{
_root.createTextField("txt"+i,i,0,(i-1)*25,500,25);
}

ID=setInterval(testF,1000);

}
public function testF():Void
{
thisP.p++;
_root.txt3.text=thisP.p;
if(thisP.p>10)
clearInterval(thisP.ID);
}
}
//最后的output停在了11处。

但是_root.onEnterFrame中用
delete _root.onEnterFrame就出错了,而Flash中是可以的.

2.8对于类内部成员对象,直接初始化无效。
如private var t:Number=1;//Wrong!!!

2.9
static private var thisP:Object;
static private var Num:Number;

在setInterval中用thisP.Num将失效.

3内部类成员对象的使用:OK

class Test
{
public function Test()
{
main();
}

private function main():Void
{
var a=new Invoke();
a.main();
}
}

class Invoke
{
private var mP:P;
public function main():Void
{
for(var i=0;i<11;i++)
{
_root.createTextField("txt"+i,i,0,(i-1)*25,500,25);
}
mP=new P();
mP.show();
}
}
class P
{
public function show():Void
{
_root.txt1.text="HelloWorld!";
}
}
//测试结果:成功!

4import

4.1 *号不支持.
import Archive.*;
Test.as:1: characters 0-6 : type error import .* is not currently supported

4.2保持包的完整性,做完全面向对象的开发:
不要麻烦了,经测试,把类定义在子路径(1级-2级)里都没问题,
因为我们使用的是
mtasc Test.as -swf subC.swf
让Test.as去找好了.

所以,用mtasc做dev的思考方式可以和Flash中保持一致了.

flash
swf
CMain.as
+----
myPackage
+----
SubPackage1
myC1.as
myC2.as
SubPackage2
myC3.as
myC4.as
Flash中:#include "Script.as"

Script.as中:

....//其它代码,如fscommad("allowscale",false);
new CMain();//经测试,这种模式可行的.

CMain中:

import myPackage.SubPackage1.myC1;
import myPackage.SubPackage2.myC3;
...
class CMain
{
public function CMain()
{
main();
}
private function main():Void
{
/*Your Real Code ,like
var myIns:myC1=new myC1();
myIns.method();
...
funDesignPatterns(argu1,...);
...
*/
}
}

这样的做法并非多此一举,层层下放之后,代码的开发模式变得相对固定的多了,
Hoho,心潮澎湃啊,Devloping!!!

5
不支持try...catch...throw ,郁闷~~~难道真的只能降格为测试用的了?

6
不支持typeof

7
不支持TextField.StyleSheet

8
不支持getNextHighestDepth();

由于MTASC并不能特别好的支持一些AS2中的有的方法及对象,它唯一的优点是速度狂快,
所以目前认为它只在测试阶段有些用,真正做东东的,还得用FLASH的编译器。

下面这个飞机游戏的测试就是在完全的mtasc环境下做的,代码仅供参考,只想对MTASC中的AS代码做个范例,我不对此提供任何技术支持.


点击浏览该文件
mtasc 用起来很不习惯啊,但是我觉得它比FlashMXpro2004有前途。

EmilMatthew是用Eclipse的IDE么,还是...不是notpad吧?要是Eclipse,请麻烦帮帮忙。

我怎么在IDE环境下配置才能直接调试啊?现在还要敲完代码,自己找.swf然后在命令行窗口...累死。

2.1“不支持V2组件”。

我好像看到有人说,是因为没有包含相应的剪辑在.swf文件,用FlashMXpro2004发布的时候,要是包含了一个就可以使用里边的类了。不过自己试也没成功,那些组件的类的代码被mtasc删掉了。

2.4“局部变量竟然可以访问”你没有说访问什么啊。这是可以访问什么呢。

对这个,各人习惯啦。有人就觉得非常合理,觉得:

.......
public function B()
{
var p:Number=1;
_root.onEnterFrame=function():Void
{
p++;
_root.txtA.text=p;
}
}

等价于

.......
public function B()
{
var p:Number=1;
_root.p = p; //加这么一句,逻辑就清楚了
_root.onEnterFrame=function():Void
{
p++;
txtA.text=p;//这个_root.没有必要写的
}
}

而且充分体现了,动态语言的优势,甚至你可以用for定义一大批函数。

麻烦反汇编看看代码是不是想我想的一样运行的好不好?

对了,关于mtasc加一条:不支持with。

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。