查看完整版本: [原创]菜鸟偶是flash初学者~~关于FLASH的笔记

大饼先生 2006-9-17 14:50

[原创]菜鸟偶是flash初学者~~关于FLASH的笔记

开始接触FLASH快5天了~~看了两本FLASH MX的书,一本侧重软件本身,另一本侧重ActionScript编程。
学校图书馆里关于FLASH的书也太旧了吧,最新版的都是FLASH MX的。feng4ever告诉我说flash mx的ActionScript是as1,而最新的是as3....汗。。再次落伍。。。
于是今天上午下了个flash 8,在蓝色理想的论坛找了几篇关于AS2的贴子看看(貌似8不支持AS3吧)。
现在来扯扯我对FLASH的认识吧。。。各位高手别笑话。。。

FLASH确实是很大强大的东东,终于知道为什么java applet在网络上流行不起来的原因了。。矢量的FLASH确实比java applet小很多。而且便利性更是不可相提并论的。。

我觉得flash的成功有一半要归功于ActionScrpit,有了AS,几个简简单单的帧就可以组成一个强大的可交互的FLASH了~~前两天在论坛看贴子,有一个教学贴是做一个蜗牛赛跑的小游戏,看过之后自己独立实现了它,整个FLASH就一个帧……插入的MC也只有一个帧……

关于AS2和AS3。
在论坛里的贴子看到的AS3对AS2的改进,感觉在面向对象那一块基本上没有什么改进,加了个访问修饰符internal ,一般情况下用AS2已经存在的public和private就差不多了。加了个package,维护起来会方便些。其它方面我就不管啦,反正AS2我也不熟,直接学学AS3得了~
AS2、AS3的精髓是面向对象吧,不然micromeadia没必要花那么大心思去设计,只要在AS1的基础上加上一些内部的类和更强大的方法就可以了,不过在论坛貌似没见到这方面的贴子`~
自己试了试AS2的面向对象编程好像AS2没有多态吧?自定义类和接口,类的向上转型,这些面向对象的特性AS里都可以做到。比如说:定义了一个"人"的接口,人都会吃饭和睡觉:


CODE:[Copy to clipboard]interface person{
    function eat();
    function sleep();
    }
学生也是人,但学生还要学习,所以定义一个类:


CODE:[Copy to clipboard]class student implements person{
    function eat(){
        trace("eating");
    };
    function sleep(){
        trace("sleeping");        
    }
    function study(){
        trace("studing");
    }
}
在flash文档中,加入action:


CODE:[Copy to clipboard]import test;
var s:person = new student();
s.eat();
s.sleep();
s.study();
会输出
eating
sleeping
studying


FLASH actionscript最让我不习惯的是不做类型检查的…变量可以不先申明就调用、函数参数也不做限定,比如说对上面的代码,我加入一个方法,该方法要接收一个person类型的参数,在方法内部调用person的eat方法,而是就算是传入一个整型参数,也不会出现错误。
这样的话要是什么时候大一点的程序出错了,调试起来可就相当麻烦了~……


[B]下面是几天来的一点笔记:[/B]


QUOTE:
1)on(release)事件只能作用在按钮上面

2)_xscale和_yscale分别代表元件的长度和宽度

3)_x和_y分别代表元件所处屏幕的位置

4)setProperty设置属性,参数为setProperty(对象,参数,值)

5)flash里自带有一些组件,它们包启一些属性、方法和事件,比如Button组件,包含click事件,包含setSize方法,可以通过对该组件对象使用as来设置点击该组件后button的大小:
       on(click){
                            this.setSize(长,宽,boolean);
       }

6)用trace(消息)可以在输出窗口中输出调试消息。

7)全局变量用_global标识符声明,例如:       _global.myName="colasnail";       而局部变量用:       var 变量名=表达式       时间轴变量声明,例如:       _root.fish.color = "blue";       声明数组变量(下标从0开始):var myArray0 = new Array();       var myArray = ["test1","test2"];trace(myArray[1]);

8)动态文本框的属性有个“变量”属性,可以指定该属性值为一个变量,则文本框的内容将显示为变量值。

9)duplicateMovieClip(目标,新名称,深度),用于复制影片剪辑。

10)调用loadVariables("目标文件"方法时,要注意目标文件里的变量存放。比如说目标文件里存放有以下字段:
“test=this is a test!!!!”
则装载这个文件后,就可以使用test变量了~

11)hitText(_root._xmouse,_root._ymouse)可以用来检查鼠标是否处于影片剪辑范围之内。hitText("影片剪辑名"可以检查两个影片剪辑是否相交.

12)用loadMovieNum("目标.swf",level),可以将一个外部的flash加载到第level层上,当加到第0层上即取代原flash。level值越大的越在上面!而loadMovie("目录.swf",MovieClip)则是将外部flash加载到指定的MovieClip中!

13)通过创建新的Sound()对象,再调用其attachSound("指定声音文件",可以动态的加入已经放在库中的声音文件。调用其start(秒偏移量,循环次数)就可以播放该声音文件了~例如:
bgm_snd = new Sound();
bgm_snd.attachSound("bgm");
bgm_snd.start(0,20);

14)_rotation控制旋转角度

15)关于_global全局变量的一点疑问:定义一个_global变量赋给初始值,在一个按钮的点击事件里将改变该变量的值,在一个MovieClip的onClipEvent(enterFrame)事件里输出该变量,发现点击改变该变量值后,enterFrame里的值一直都没改变!不知何故,但用movieClip.onEnterFrame里输出该值却是改变了的~

16)通过XMLSocket的connect方法可以创建与服务器的连接,通过send()方法和onDate()/onXML()与服务端通信。
乱七八糟写了一大堆~~有什么不对的地方麻烦大家帮我提点下!谢谢了先

如影随形 2006-10-4 18:29

我也是刚学 LZ 多多交流啊

colinvivy 2006-10-4 18:30

关注中。。。。

snoopy 2006-11-11 22:23

我也想学 可是 lz写的我都看不懂::77:: ::77::
::98:: ::98:: 算了::88::

冰森林的鱼 2006-11-15 16:43

同上 哭...........................::84::

hotmoney 2006-11-16 19:43

::78:: ::73::
页: [1]
查看完整版本: [原创]菜鸟偶是flash初学者~~关于FLASH的笔记