逆袭的水晶吧 关注:28贴子:1,058
  • 2回复贴,共1

★关于ActionScript 3.0

取消只看楼主收藏回复

程序员喜欢但动画师恨之入骨的3.0


IP属地:北京1楼2014-01-08 00:04回复
    每个软件都会版本更新换代,但打开Adobe收购后的Flash时,真让人恨得咬牙切齿。
    以前一个简单的脚本就能搞定的东西,现在要用一大堆复杂的语句。而且,以前脚本写在任何实例上都行,我特别喜欢那种【自由自在】【代码无处不在】的感觉,现在统统要堆在帧上了。
    搞程序的是高兴了,但动画师、设计师还活不活了。以前,他们也能在主要活计之余,轻松地做两个脚本出来,丰富内容。现在,非得找个程序员来帮忙不可了,要不然就得一切从零开始,重新学上一年半载。
    AS2.0看看别人写的代码就能自己学会。AS3.0,对着一个简单的按钮脚本,看一下午都看不会。到现在,作为一个二手的程序员,我也渐渐理解了O-O-P的好处和严谨的好处了。不过我还是无法原谅让人难以上手的东西。学这个几乎是从0开始。


    IP属地:北京2楼2014-01-08 00:21
    回复
      2025-07-04 03:55:02
      广告
      经过了几天的学习(感谢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过渡过来的人的心情,怕你被前面那几行东西弄晕了,把函数怎么写都给忘了,提醒你一下。


      IP属地:北京6楼2014-06-04 01:29
      收起回复