Flash初哥

January 17, 2010

as 使用技巧

Filed under: Flash技術文章 — Tags: , — KAV @ 11:52 pm

都是在项目中总结的,经过实践的,在flex2 as3下使用的。

as调js
ExternalInterface.call(“js函数名”,参数:数组);(可以接收返回值)

js调as
as:ExternalInterface.addCallback(“js中使用的函数名(字符串)”, as中的函数(函数类型));
js:SWF名.js中使用的函数名(参数);

对象清理:
as中如果某个对象不被使用,且没有任何对象引用它,则此对象会被回收器回收(不一定什么时候),所以用完的对象一定要处理(比如加的监听要删除等等),否则会长占内存。

重绘:
flash中被挡住的对象也会被重绘,比如在一个位置不停的画圆,画到几百或几千层,当鼠标经过这块的时候会感觉到速度变慢,查看cpu状态会看到cpu被占满,但不会占内存。

判断对象类型:
if(a is 类型){}

获得对象类型:
trace(typeof 对象)输出对象类型

类型转化:
var a:类型 = b as 类型;

强转:
var a:类型 = 类型(b);

判断数字:
isNaN(表达式),注意是数字时返回false

Timer
不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.

private,protected,internal,public访问权限
private:只能在类本身内部访问
protected:可以由类本身或任何子类访问.
internal:可以由类本身或者相同包内的任何类访问;
public:可以在类内部访问,也可以由类实例访问

for…in与for each…in的区别
与for…in循环不同的是,for each…in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).
例如:var obj:Object={name1:value1,name2:value2};
for…in取出的是name,for each…in取出的是value

对象
AS中所有对象可默认互相转换,如数组可以当作Map来用。
但是作为数组来用时,就不能保证顺序了。
比如:
var array:Array = new Array();
array["a"] = new Object();

ToolTip
如果禁止ToolTip显示,
1.this.truncateToFit = false;(不会出现…)
2.重写updateDisplayList,并最后super.toolTip = null;(会出现…)

反射
classType = flash.utils.getDefinitionByName(className) as Class;
new classType();

格林尼治时间 格式化时出错。(如中国 时区,1970/01/01 08:00时出错,已经确认是flex的bug)

replace所有
AS中没有replaceAll 函数,要实现这个函数可以用正则表达式
如: 将 00:00:00 中的 ’:‘替换成  ‘ ‘ 可如下实现
var testStr : String = “00:00:00″;
var repedStr : String = testStr.replace(/:/g, ” “);
/:/g 后面的g不能少, g 表示全局

AS对象深Clone方法:
private function clone(_source:Object):* {
var copier:ByteArray = new ByteArray();
copier.writeObject(_source);
copier.position = 0;
return(copier.readObject());
}

mx_internal类型的方法也可以重载:(不推荐)
需要在import的最下面进行如下声明-
use namespace mx_internal;

關於圖形元件的小知識

Filed under: Flash技術文章 — Tags: — KAV @ 11:49 pm

简介:很多闪客辛辛苦苦制作完成了一部动画,后期导出视频格式时,发现只要用了影片剪辑的地方都失效了,静止不动,所以只好用格式转化软件,换来的是跳帧卡帧画质降低,这对于严肃的想在无纸动画领域有所作为的闪客是 …
关键字:图形元件
(more…)

Flash AS3教程:疑难杂症汇总

Filed under: Flash,Flash技術文章 — Tags: , — KAV @ 9:13 am

Webjx核心提示:在做项目的时候,总会碰到很多,奇奇怪怪的问题,看了这篇文章相信会有些帮助,虽然不是很全面,但只要是我碰到过的问题,就分享给大家!但是也怕有些想不起了.

前面学习了Flash AS3教程:ImageLoader类,但是有时我们在做项目时可能会遇到这样或那样的问题,这篇里给大家专门提供些解决办法。

在做项目的时候,总会碰到很多,奇奇怪怪的问题,看了这篇文章相信会有些帮助,虽然不是很全面,但只要是我碰到过的问题,就分享给大家!但是也怕有些想不起了。。尽力额、、

(more…)

jy00755958 的強言

Filed under: 網上收隼 — KAV @ 8:56 am

那什么,我这激动啊!赶紧的申请了一个ID回贴!都快对游戏失望了!没想到这时候遇见一装B的!唉,开骂前先感叹下,装B的人太少了,玩了2天没看见一个 装的,可能是玩的人就不多吧,楼主给了我希望,首先感谢一下楼主这一装B举动,斑竹可以给他这个帖子加一分,一个游戏里面没有装B的玩家就不是一个好游 戏,首先做为一个喜欢打击装B的人和一个严重喜欢在装B的人面前装B并以羞辱他们为乐的玩家来说,其实楼主这话说的还不够雷人,还不够装,不够B,分量不 重,希望下次改进,不然就会导致我们缺乏打击装B和伪装B的激情,其实说句中肯的话,楼主只是说话冲点,自我膨胀过了点,作秀的成分含量还不高,但是够 了,我知足了,万事开头难!要在失败和压迫中成长,什么时候楼主天下无敌了,我这种人就会消失,不然以打击装B为乐的事业永远都没办法结束,中肯的话说完 了,接下来说点什么呢?
(more…)

AS3 煙花效果

Filed under: Flash,Flash技術文章 — Tags: , — KAV @ 8:52 am
?View Code ACTIONSCRIPT
 
 
 
var BitmapData0:BitmapData = new BitmapData(550, 400, false, 0x0);
var Bitmap0:Bitmap = new Bitmap(BitmapData0);
addChild(Bitmap0);
var dotArr:Array = new Array();
stage.addEventListener(MouseEvent.MOUSE_DOWN,mouse_down);
function mouse_down(evt:MouseEvent) {
     var color:Number = 0xff000000+int(Math.random()*0xffffff);
     for (var i:Number = 0; i<500; i++) {
         var v:Number = Math.random()*10;
         var a:Number =Math.random()*Math.PI*2;
         var xx:Number = v*Math.cos(a)+stage.mouseX;
         var yy:Number = v*Math.sin(a)+stage.mouseY;
         var mouseP:Point=new Point(stage.mouseX,stage.mouseY);
         if (Math.random()>0.6) {
             var cc:Number = 0xffffffff;
         } else {
             cc= color;
         }
         dotArr.push([xx, yy, v*Math.cos(a), v*Math.sin(a), cc,mouseP]);
     }
}
 
var cf:ConvolutionFilter = new ConvolutionFilter(3, 3, [1, 1, 1, 1, 32, 1, 1, 1, 1], 40,0);
stage.addEventListener(Event.ENTER_FRAME,enter_frame);
function enter_frame(evt:Event) {
     for (var i:Number = 0; i<dotArr.length; i++) {
         BitmapData0.setPixel32(dotArr[i][0],dotArr[i][1],dotArr[i][4]);
         dotArr[i][0] += dotArr[i][2]*Math.random();
         dotArr[i][1] += dotArr[i][3]*Math.random();
         var dotP:Point=new Point(dotArr[i][0],dotArr[i][1]);
         var b1:Boolean=Point.distance(dotP,dotArr[i][5])>80;
         var b2:Boolean=Math.abs(dotArr[i][2])+Math.abs(dotArr[i][3])<0.5;
         if ((b1 || b2) && Math.random()>0.9) {
             dotArr.splice(i,1);
         }
     }
     BitmapData0.applyFilter(BitmapData0.clone(),BitmapData0.rect,new Point(0, 0),cf);
}

由”文心雕龙”所寫

Powered by WordPress