经过了几天的学习(感谢Youtube上的Big Toe Interactive的教学视频),我对AS3的偏见消解了一半,也基本找回从前的感觉了!只要了解了一些基本的东西,很快就能够重新上手,以前的知识也可以重新派上用场。
首先,代码不能像以前一样写在影片剪辑上,只能写在帧上了。但是,要想正经地开发游戏,代码应该写在单独的.as文件里。虽然一开始会觉得繁琐些,但它也会让思路更严谨清楚。
写在帧上的代码会受到严重的功能限制。"生成物体"的addChild,在函数里调用无效!但把一模一样的程序写在.as文件里,就管用了!写在帧上我都不知道是不是有可能实现这个功能。编游戏没法用这个函数,这不是要人命吗。
所以下面开始详细解说。要开始一个工程,
第一件事就是建立一个单独的.as脚本文件。在新建菜单里,选择ActionScript 3.0 Class,需要输入一个"class"名作为标识。我觉得在这里把class译为"集"好一点。
第二件事:把这个AS脚本和FLA文件连结起来。
每个FLA文件,都有且只能有一个"档案之集(Document Class)",在“属性“栏里的”发布(PUBLISH)“区,有一个Class项,在那里填入集的名字。集名貌似是必须与AS文件名相同的。
如果忽略了这一步,在AS脚本里写多少东西它也不会运行。
注意1:在什么都没选中的时候,属性栏显示的就是整个FLA文档的属性。
注意2:因为AS脚本是一个单独的文件了,所以由FLA生成的SWF,是在调用这个外部文件。这意味着什么呢?这意味着你每次测试之前都得按Ctrl+F5把AS脚本存一下盘,不然你刚才改动的部分不算数。
第三件事:把集名设为Main,则刚建立的AS文件会有以下代码:
package {
public class Main {
public function Main() {
}
}
}
为了让影片剪辑们不喝西北风,应该立即在public class Main后面加上"extends MovieClip". 打到一半会弹出菜单,直接选用的话,前面也会自动多出另一行代码,成为这样:
package {
import flash.display.MovieClip
public class Main extends MovieClip{
public function Main() {
}
}
}
下面详细解释每行的意思:
package - 打包,某种封装方式,我也不知道,反正肯定会让程序更安全,或者更有序。
import flash.display.MovieClip - 顾名思义,从Flash文档里进口影片剪辑. 虽然脚本和文档是连结的,它也是在调用外面的资源。
需要什么就得进口什么,即使是很常用的函数库也一样!需要编键盘控制的程序的话,就要进口flash.events.KeyboardEvent这个《键盘函数书》。
我想,是自带函数数量实在太多了,所以让用户自己说明白,要用到哪几本"书"。AS2里搞不好是自动为你加载所有可能的资源。看来,很多代码里觉得繁琐的东西,其实是为了性能的优化!
public class Main - 我对Class的概念还不是特别熟悉,但是在这里,毫无疑问代表了被FLA所使用的"档案之集"
public function Main() - 这表面上看当然是个"Main函数",但它是因为档案集起名为Main才叫Main的,我不太清楚函数这种用户自由发挥的东西,系统为什么自动给你生成一个同名的。可能是考虑到从AS2过渡过来的人的心情,怕你被前面那几行东西弄晕了,把函数怎么写都给忘了,提醒你一下。