flash ActionScript30最强教程.docx
《flash ActionScript30最强教程.docx》由会员分享,可在线阅读,更多相关《flash ActionScript30最强教程.docx(31页珍藏版)》请在冰豆网上搜索。
![flash ActionScript30最强教程.docx](https://file1.bdocx.com/fileroot1/2023-4/17/2e0bd2b6-ae25-4578-a16b-15b97e9b07a2/2e0bd2b6-ae25-4578-a16b-15b97e9b07a21.gif)
flashActionScript30最强教程
flashActionScript30最强教程.txtゅ你不用一上线看见莪在线,就急着隐身,放心。
莪不会去缠你。
说好的不离不弃现在反而自己却做不到╮1.hello,world
2.定义变量
var变量名:
数据类型;
定义常量:
const常量名:
常量类型=常量值;
定义静态:
static
3.数据类型
基本类型:
int:
32位正负整数,处理坐标,默认值0;
uint:
16位正整数,处理与颜色有关的值,默认值0;
Number:
64位小数,默认值NaN;
Boolean:
布尔值,默认值false;
String:
字符串,默认值null;
常用类型:
Array:
数组;
Date:
日期;
Error:
异常;
Function:
函数;
RegExp:
正则表达式;
XML:
xml;
XMLList:
xml树;
4.运算符
+,-,*,/,%;;
=,+=,-=,*=,/=,%=;
==,!
=,===,!
===,>,<,>=,<=;
&&,||,!
;
?
:
;
typeof:
返回对象类型;
is:
判断是否是这个类型;
as:
当做这个类型返回;
in:
判断一个对象是否含有另一个对象的键或索引;
delete:
删除动态属性
5.程序控制语句:
while,do-while,for,
for(varkina),
foreach(varkina),
(区别:
都用于遍历集合,如Array,XML,XMLList,只是for中k为对象下标;foreach中的k为对象本身)
break,continue跳出循环,
switch,
6.函数
function函数名(参数对象:
参数类型=默认值):
返回值类型{
函数体
}
或
var函数名:
Function=function(参数对象:
参数类型=默认值):
返回值类型{
函数体
}
区别:
this指向不同
注:
函数是Function类的对象。
该类有arguments属性,意为传入该函数的参数,有arguments.length表示参数个数,有arguments.callee()回调自身;
另:
函数可定义可变参数:
function函数名(...kebiancanshu):
返回值{
kebiancanshu.length;
}
7.命名空间,相当于自己定义访问权限符。
定义:
namespace命名空间名
打开:
usenamespace命名空间名
使用:
命名空间名:
:
属性/方法
8.动态类
在class前加入dynamic,可动态改变类,效率不如密封类,也就是一般的类,一般不用。
9.方法重载和重写
重载:
在ActionScript中不支持方法重载,但可利用动态参数自己在函数内部完成。
重写:
overidepublicfunction函数名():
返回值{}
10.setter和getter方法
publicfunctionget函数名():
返回类型{
return私有对象;
}
publicfunctionset函数名(参数对象:
参数类型){
私有对象=参数对象
}
11.数组
属性:
length长度
方法:
查找:
indexOf(),lastIndexOf();
首尾增加一或多个元素:
push(),unshift();
首尾删除一个元素:
pop(),shift();
插入或删除元素:
splice(删除点下标,删除个数,插入新元素1,插入新元素2,插入新元素3,...)
(注:
删除点的下标可为负值,表示从后往前算,-1表示倒数第一个元素。
)
获取子数组:
slice(起始下标,终点下标);
连接数组:
concat();
排序:
反序reverse(),正序sort(),指定排序sortOn();
(Array.CASEINSENSITIVE字母大小写不敏感或数字从小到大;
Array.DESCENDING字母倒序;
Array.UNIQUESORT唯一排序;
Array.NUMBERIC数字排序;
Array.RETURNINDEXEDARRAY返回排序后的下标序列)
操作数组每个元素方法:
遍历操作:
forEach(callback:
Function):
void;回调函数不返回任何值;
过滤器:
filter(callback:
Function):
Array;回调函数返回新数组的元素;
映射器:
map(callback:
Function):
Array;回调函数返回新数组的元素;
判断是否满足一个:
some(callback:
Function):
Boolean;回调函数返回单个元素比较结果;
判断是否全满足:
every(callback:
Function):
Boolean;回调函数返回单个元素比较结果;
回调函数:
functioncallback(item:
*,index:
int,array:
Array):
void;
(注:
item为原数组元素引用,index为原数组下标)
12.字符串String
方法:
charAt(),charCodeAt()返回字符,返回unicode;
String.formCharCode()根据unicode返回字符;
indexOf(查询对象[,起始索引]);查找
subString(起始索引[,终点索引]),slice(起始索引[,终点索引]),substr(起始索引,截取长度);返回子串
split(分隔符|正则表达式);分割子串
13.正则表达式RegExp
定义:
var正则对象:
RegExp=/匹配模式/标志位
var正则对象:
RegExp=newRegExp(匹配模式,标志位)
14.XML类
小例子:
varfile:
String="yemen98941";
varxml1:
XML=newXML(file);
varxml2:
XML=yemen98941
trace(xml1.name);
trace(xml2.name);
xml1.repass=newXML();//增加子项
xml1.repass="98941";
xml1.repass.@useMethod="reinput";//增加属性
trace(xml1);
deletexml1.repass;//删除子项
trace(xml1);
trace(xml1..name);//检索
从外部读入xml
varurlRequest:
URLRequest=newURLRequest("abcd.xml");
varurlLoader:
URLLoader=newURLLoader(urlRequest);
urlLoader.addEventListener(Event.COMPLETE,an);
functionan(evt:
Event){
varxml:
XML=newXML(urlLoader.data);
trace(xml);
}
15.事件模型
EventDispatcher-->Event-->EventListener
例子:
a_mc.addEventListener(MouseEvent.CLICK,an);
functionan(evt:
MouseEvent):
void{
trace(evt.type);//输出时间类型
evt.target.x+=10;
16.自定义事件
通常用于传递数据,自定义事件需要手动触发。
方法:
1.自定义事件类,继承自Event类,需要传递的数据定义到该自定义事件类中,并定义事件类型字符串常量,实现构造方法,toString方法和clone方法,如:
package{
importflash.events.Event;
publicclassMyEventextendsEvent{
publicstaticconstFA_SHENG:
String="发送了一个事件";//事件类型常量
privatevara:
int;//定义传递的数据
publicfunctionMyEvent():
void{//自定义事件构造函数,调用父类Event构造函数,传递事件类型常量作为参数
super(FA_SHENG);
}
publicfunctiongetabc():
int{
returna;
}
publicfunctionsetabc(n:
int):
void{
a=n;
}
overridepublicfunctiontoStrin():
String{
returnformatToString("MyEvent","type","bubbles","cancelable","eventPhase","abc")
}
overridepublicfunctionclone():
Event{
varevt:
MyEvent=newMyEvent();
evt.a=a;
returnevt;
}
}
}
2.自定义事件发送类
package{
importflash.events.EventDispatcher;
publicclassSetEventObjectextendsEventDispatcher{
publicfunctionchufa():
void{
varmyevent:
MyEvent=newMyEvent();
myevent.abc=45;
dispatchEvent(myevent);
}
}
}
3.调用
package{
importflash.display.Sprite;
publicclassMainextendsSprite{
publicfunctionMain():
void{
varsetEventObject:
SetEventObject=newSetEventObject();
setEventObject.addEventListener(MyEvent.FA_SHENG,an);
setEventObject.chufa();
}
privatefunctionan(evt:
MyEvent):
void{
trace(evt);
}
}
}
17.网络通讯
例子:
varurlRequest:
URLRequest=newURLRequest(URL路径);//定义地址
varurlVariables:
URLVariables=newURLVariables("name=u&pass=1");//定义参数
urlRequest.method=URLRequestMethod.POST;//设定方法
urlRequest.data=urlVariables;//设定参数
(如为XML:
urlRequest.contentType="text/xml";
urlRequest.data=XML对象.toXMLString();)
varurlLoader:
URLLoader=newURLLoader();//定义访问器
urlLoader.dataFormat=URLLoaderDataFormat.TEXT;//设置返回值类型
(文本型,还有二进制URLLoaderDataFormat.BINARY和键值对URLLoaderDataFormat.VARIABLES)
urlLoader.load(urlRequest);//发送请求
urlLoader.addEventListener(Event.COMPLETE,do)//增加监听器
trace(urlLoader.data);//返回值在data属性中
URLRequest类的使用:
小例子之打开网页:
package{
importflash.display.Sprite;
importflash.geom.Rectangle;
importflash.events.MouseEvent;
import.URLRequest;
import.*;
publicclassMainextendsSprite{
publicfunctionMain():
void{
vara:
Sprite=newSprite();
a.graphics.beginFill(0x00ff00);
a.graphics.drawRect(0,0,100,50);
a.graphics.endFill();
a.addEventListener(MouseEvent.CLICK,onClick);
addChild(a);
}
privatefunctiononClick(evt:
MouseEvent):
void{
varurl:
URLRequest=newURLRequest("");
navigateToURL(url);
}
}
}
小例子之本地通讯:
发送端:
vara:
LocalConnection=newLocalConnection();
button.addEventListener(MouseEvent.CLICK,an);
functionan(evt:
MouseEvent):
void{
a.send("abc","showText",sender_txt.text);
}
接收端:
varreciever:
LocalConnection=newLocalConnection();
reciever.client=this;
reciever.connect("abc");
functionshowText(txt:
String){
reciever_txt.text=txt;
}
播放视频小例子:
vara:
NetConnection=newNetConnection();
a.connect(null);
varb:
NetStream=newNetStream(a);
b.client=this;
varc:
Video=newVideo(160,120);
c.attachNetStream(b);
addChild(c);
b.play("a.flv");
vard:
Sprite=newSprite();
d.graphics.beginFill(0x00ffff);
d.graphics.drawRect(0,0,50,50);
d.graphics.endFill();
d.x=350;
d.y=300;
addChild(d);
d.addEventListener(MouseEvent.CLICK,an);
functionan(evt:
MouseEvent):
void{
b.togglePause();
}
播放mp3小例子:
vara:
Sound=newSound();
varurl:
URLRequest=newURLRequest("1.mp3");
a.load(url);
varb:
SoundChannel=newSoundChannel();
b=a.play();
button.addEventListener(MouseEvent.CLICK,an);
functionan(evt:
MouseEvent):
void{
b.stop();
}
vartrans:
SoundTransform=newSoundTransform();
trans.volume=0.1;
b.soundTransform=trans;
flash和javascript通讯小例子:
JS与AS通讯:
ExternalInterface.addCallback("abcd",ab);
functionab(a:
String):
void{
textField.text=a;
}
AS与JS通讯:
button.addEventListener(MouseEvent.CLICK,an);
functionan(evt:
MouseEvent):
void{
ExternalInterface.call("sendToJS",textField.text);
}
附:
flash与后台服务器通讯四种方法:
18.视觉编程
继承树:
父类DisplayObject的属性:
name名字。
parent父容器。
root当前swf主类实例引用。
stage显示对象的舞台,只读。
x横坐标。
y纵坐标。
width宽。
height高。
scaleX缩放(0~1)。
scaleY缩放(0~1)。
mouseX鼠标x位置。
mouseY鼠标y位置。
rotation旋转度数。
alpha透明度。
visible是否可视。
mask遮罩对象引用。
scale9Grid有效缩放网格。
cacheAsBitmap复杂图形用。
filters路径数组。
loaderInfo下载信息。
transform记录信息的类Transform对象。
DisplayObject方法:
globalToLocal(Point:
Point):
Point舞台坐标转换为显示对象坐标。
hitTestObject()碰撞检测。
DisplayObjectContainer属性:
numChildren子对象个数,子对象索引从0开始到numChildren-1。
DisplayObjectContainer方法:
添加删除子对象方法:
addChild(),addChildAt(),removeChild(),removeChildAt()
访问子对象方法:
getChildAt(),getChildByName(),getChildIndex(),getObjectsUnderPoint()
检测子对象方法:
contains(),
设置次序方法:
setChildIndex(),swapChildren(),swapChildreAt()
绘图方法:
矢量图:
内含Graphic类对象的类均可,有Sprite,MovieClip,Shape
位图:
Bitmap
文本方法:
TextField类,动态文本type属性为TextFieldType.DYNAMIC;输入文本type为TextFieldType.INPUT。
Sprite类绘图小例子:
内含Graphics类,用于画图,拖动小例子:
package{
importflash.display.Sprite;
importflash.events.MouseEvent;
publicclassMainextendsSprite{
privatevara:
Sprite=newSprite();
publicfunctionMain():
void{
a.graphics.lineStyle(2,0xff0000);
a.graphics.beginFill(0x00ff00);
a.graphics.drawRect(0,0,100,50);
a.graphics.endFill();
this.addChild(a)
a.addEventListener(MouseEvent.MOUSE_DOWN,an);
a.addEventListener(MouseEvent.MOUSE_UP,tai);
}
privatefunctionan(evt:
MouseEvent):
void{
a.startDrag();
}
privatefunctiontai(evt:
MouseEvent):
void{
a.stopDrag();
}
}
}
Graphics类详解
方法:
beginGradientFill()渐变色填充
clear()清除图像
lineStyle(粗细值,颜色值)划线的线条样式
moveTo(起始坐标)设定起始点
lineTo(结束坐标)设定结束点
endFill()结束填充
curveTo(折点,终点)曲线结束点
graphics.beginBitmapFill()填充位图,小例子,位图通过导入,并修改属性的链接项。
矢量图填充位图例子:
package{
importflash.display.Sprite;
importflash.events.MouseEvent;
publicclassMainextendsSprite{
privatevara:
Sprite=newSprite();
publicfunctionMain():
void{
varh:
ha=newha(0,0);
a.graphics.beginBitmapFill(h);
a.graphics.drawRect(0,0,120,140);
a.graphics.endFill();
addChild(a);
}
}
}
位图绘制详解:
使用:
Bitmap类与BitmapData类
Bitmap属性:
bitmapData:
BitmapData
pixelSnapping紧贴像素
smoothing平滑处理
BitmapData属性:
height
rect:
Rectangle
width
使用方法小例子:
package{
importflash