公司在用as3,姑且学一下
-7.在obj或者数组里的变量不需要声明类型,但要写上值,如obj:object={x:1,y:{z:2}},通过obj[y].z获取该数组y下表里面的z的值
-6. as3二维数组:var btnCoatLocition :Array = [[-139.2,126.2],[-63,-121.9]];
-5.object类型里可以放任何未定义的子object,如var x:object=newobject();x.atype=...虽然atype未定义但是依然可以使用,但有时需要强制类型转换,并且注意该类型是引用类型的!
-4.private var x:object={x:boolen,y:int(不加逗号这里)};这是as3里结构体的定义方式
-3.keyboard监听对象为stage而不是this
-2.function或者其他成员定义或申明时必须加private或者public
-1. mc1=getChildByName('mc2') as MovieClip
0.a继承b,b里有个变量c而a里没有,则trace(b.c)正确,而trace(a.c)或者trace(c)都是错误的,因为a类里没有
1.trace相当于print
2.变量命名规则:var x: f=new f()可以翻译为:变量x:(冒号后面是描述)是f类型的,它的值为...(这里的值是创建的新类)
函数命名规则:function f(a :int):void
数组则要 function f(,,,a :int):void表示不确定
3.一个包里可以含有多个包,也可以包含多个类,如com.a.b.c,就是指a包里的b包里的c类,包命名规则全部小写。
4.每个类必须有构造函数,即使是空类也要有空构造,如class c{ public function c(){}}构造函数里写上要初始化的东西(类似于start函数)
5.对于protected类型的变量却想要像public一样任意供外部调用,则要使用set 和get方法
6.部分类标识符:dynamic可以之后继续动态添加类里的属性了 final:表示该类是最终形体,无法被继承
7.把基类创建为movieclip貌似和prefeb一样的效果
8.getdefinationbyname("")as int和object.find(“很像”)as int
9.as ...经常用于将子类强制转换成父类(因为是继承自父类所以是兼容的)
10.创建好的对象要addchild到舞台上,否则无效,就像脚本写完不加到对象上无效一样
11.addeventlistener(a,b,c,d,e),a表示监听的方法,b表示监听结果返回给b,并且b必须包含参数event x,然后根据返回的x的值判断该干什么,把e设置为true就可以开启弱引用,当你忘记removelistener时自动帮你清除,所以建议常开
12.try{}catch(a:argumenterror){trace}catch(b:referencerreor){trace}catch(c:error){其它错误}
或者try{}catch(){}finally{},其中finally必定执行
但是上面的错误类型都是系统定的,如果想要自定义的,可以使用if()throw new f(...)
13.object(尽量使用dictionary))as中可以用字符串作为下标!具体是先new 一个object类型a(但其实这个可以当数组用而不仅仅是单个object),然后a[b.name]=b,就是在b.name下标处存储b! 通过delete a[..]来删除
再使用for var i:string in a {...}打操作
14.for in和堆栈存储一样,是从后往前遍历
15. 数组(尽量使用vector)1.as3里数组不需要定义大小,如var x:array=new array();通过x.push(a)添加元素
2.通过concat合并数组,var b:array=x.concat(c,d,e),将数组x和c,d,e连起来。
3.x.sorton("j",array.升降序)按照x数组里的x.j属性排序,默认升序
16.一般情况下只要是相同类型的,都要使用vector代替数组,因为它不能合并不同类型的,所以遍历起来比数组效率高。
var x:vector.<sprite>=new vector.<sprite>();
x.push(...);
17.弱引用指的是引用脆弱到只要你删除了它,和它有关的都会被删除
18.dictionary比object更加强大,它可以以任何属性作为下标!
var x :dictionary=new dictionary(true(是否使用弱引用,一默认为false,但是true比较好));sprite b=new sprite(), x[b]=b,而不需要x[b.name]=b了(因为某些方法没有name属性所以字典比起object更加给力!)
19.atan2(y,x(是y参数在前,x在后啊!))里输入x,y值得出的范围是从-pi到pi,绝对精确,即1,4象限正,二三负,画图可知。而atan只是获取-90到正90的,会产生1,3 2,4象限结果一样但通通旋转一四象限的弊端,所以用atan2
20.没有加乘号会运行时报错,not a function
21.在小球类里开启监听即可,相当于个人的update!和u3d无区别!
22.addlisterner(event.addtostage,f);表示当this被添加到了stage上时调用f(),把这句话写在构造函数里,在实例化时a=new a()时开启监听,但是在addchild时才调用init进行初始化,避免了一些内存浪费,并且此时this的父类对象和舞台都是存在的,可以在里面写上有关父节点或者stage的处理而不报错。但要记得f()里面removelistener(f)或者开启弱引用,记住addlistener之后要通过x.start开启计时
21.一般初始化可以这样写(if(stage)f()else addlistener(addtostage,f))表示如果你此时有苹果立刻吃,否则开启监听,一旦你有了苹果(加到物舞台上)就吃。对于场景中只能存在一个的可以用这种方式创建,但如果是多个的就不用if了,直接每个都开启监听。
22.定时触发器:timer x=new timer(a,b),(是x而不是this来addlistener)x.addlistner(timer.timer,c)(timer表示每过a毫秒调用函数c,一共执行b次,如果b是0则表示一直定时触发,直到你写了x.stop的地方,然后也可以x.addlistener(timer.timercomplete,d),表示停止时调用d函数的监听
23.0000创建的是黑色,0*e0e0e0是白色,787878灰色
23.(对象是sprite类型的)sprite a.graphics.bginfill开始绘制(和u3d里guilayout一个道理)
a.graphics.linestyle(b)边框线颜色,默认白色
a.graphics.drawrect,drawcircle....
a.graphics.endfill()
24.array.splice(a,b)表示 从下表为a的到b的所有数组元素,如果b不填则删除到最后,如果a写负数如-1,表示最后第a个数。splice一个二维数组则删去一行,和slice区分
25.math.floor向下取整,ceil向上
2945

被折叠的 条评论
为什么被折叠?



