loadin Do…

一条只能往前走的路,叫时光.

首页 联系 订阅 管理
  3 Posts :: 155 Stories :: 78 Comments :: 0 Trackbacks

demo1

 function loop():String {
  var [i,s,v]=[10,'',0];
  while (i-->0) {
   s+=i+"+";
   v+=i;
  }
  return s.substr(0,s.length-1)+"="+v;
}
Util.print(loop());
class dummy extends Array {
  function dummy() {
    this.push("World!");
    this.unshift("Hello");
    Util.print(this.join(", "));
  }
}
new dummy;



Title

public class Util
    {
        static private var _logger:ILogger = null; static public function set logger(value:ILogger):void {
            _logger = value;
        }
       
        public static function print(...args):void {
            var s:String = args.join(" - ");
            if (_logger!=null) {
                _logger.print(s);
            }
            trace(s);
        }

    }
}


// 相同功能的未命名函数。
var doubleNumber:Function = function(num:Number):Number {
   return num*2;
}

// 这里,message参数是任意指定的。
function usesDefault(message:String = "hello"):void {
   trace(message);
}
usesDefault("test"); // trace结果为 "test"
usesDefault(); // trace结果为"hello",即默认值。
------------------------------------------------------------------
使用默认参数值,你不但可以得到一个指定的默认参数值,而且可以让你定义的函数可以有任意的参数,甚至是不被使用的参数。在函数调用时,那些没有默认值的参数必须要提供,基于这一点,所有的自由定义的有默认值的参数都要定义在参数列表之后。你不能把那些必须的参数定义在自由定义的有默认值的参数之后。
//  错误代码
// 错误:没有必须的参数
// num定义在了message之后。
function usesDefault(message:String = "hello", num:Number):void {
   // code
}


//正确代码
// 正确; usesDefault至少需要一个参数,最大是两个参数
// least 1 argument, accepts 2 at max
function usesDefault(num:Number, message:String = "hello"):void {
   // code
}

-------------------------------------------------
参数传递:
function passAnything(...statements):void {
   trace(statements.length +": "+ statements);
}
    passAnything(); // traces 0:
    passAnything(1); // traces 1: 1
    passAnything("a", true, 0); // traces 3: a,true,0

----------------------------------------------------


posted on 2008-03-24 13:57 i'am sl 阅读(117) 评论(26)  编辑 收藏

Feedback

#1楼[楼主] 2008-04-22 22:42 i'am sl      
//加载图片,另类写法
var load_num:int;
var cur_num:int;
var isover:Boolean;

loadpicdata();

function loadpicdata(i:int = 0) {
if(isover) return;
var request:URLRequest=new URLRequest("pic/"+i+".jpg");
var loader:Loader=new Loader;
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.OPEN,openHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
}
function openHandler(e:Event):void {
loadpicdata(++load_num);
}
function completeHandler(e:Event):void {
addChild(e.target.loader as Loader);
}
function errHandler(e:IOErrorEvent):void {
isover = true;
trace("loaded " + load_num + " pics!");
}

 回复 引用 查看   

#2楼[楼主] 2008-04-22 23:20 i'am sl      
var timer:Timer;
(timer=new Timer(30)).start();

 回复 引用 查看   

#3楼[楼主] 2008-04-22 23:49 i'am sl      
弧度(radians) = 角度(degrees) * Math.PI /180
角度(degrees) = 弧度(radians) * 180 / Math.PI

Math.atan2(y,x),这是 Flash 的另一个反正切函数,它比 Math.atan(ratio)要有用得多。实事上,只需要学会这个函数的用法就可以了,函数中包括两个参数:对边长度与邻边长度。有时常会误写成 x,y,请注意应该是 y,x。请看如下示例,输入 Math.atan2(1,2),然后记住这个结果:
trace(Math.atan2(1, 2) * 180 / Math.PI);

some code:
var dx:Number = mouseX - arrow.x;
var dy:Number = mouseY - arrow.y;
var radians:Number = Math.atan2(dy, dx);
arrow.rotation = radians * 180 / Math.PI;

 回复 引用 查看   

#4楼[楼主] 2008-04-25 13:19 i'am sl      
//创建二维数组存储数据
var w:uint=50;
var h:uint=50;//地图的行列,这里为50行,50列
function createMap():Array{//创建地图
var map:Array=[]
for (var iy:uint = 0; iy<h; iy++) {
map [iy] = [];
for (var ix:uint = 0; ix<w; ix++) {
map [iy][ix] =Math.random()<.2?1:0
//建立0,1地图,0表示可以行动的,1表示障碍
}
}
return map

 回复 引用 查看   

#5楼 2008-05-09 21:20 Feedback[未注册用户]
//对象 Object的属性
this.addChild(createRectMovieClip(50, 50, 0x112233, {x:50, y:50, name:'HandsomeMonkeyKing'}, 1.0)).addEventListener(MouseEvent.CLICK, mouseEvent);
this.addChild(createRectMovieClip(90, 90, 0x778899, {x:30, y:30, name:'FiveFingerMountain'}, 0.9)).addEventListener(MouseEvent.CLICK, mouseEvent);

function mouseEvent (event:MouseEvent):void
{
trace(event.target.name); // return FiveFingerMountain
}


function createRectMovieClip ($width:Number = 0, $height:Number = 0, $color:uint = 0xFFFFFF, $init:Object = null, $alpha:Number = 1, $lineAlpha:Number = 0, $thickness:Number = 0, $lineColor:Number = 0):MovieClip
{
var MC:MovieClip = new MovieClip();
MC.graphics.lineStyle($thickness, $lineColor, $lineAlpha);
MC.graphics.beginFill($color, $alpha);
MC.graphics.drawRect(0, 0, $width, $height);

for (var i:String in $init) MC[i] = $init[i];

return MC;
}

 回复 引用   

#6楼 2008-05-09 21:22 Feedback[未注册用户]
//全局 to 局部
DisplayObject.globalToLocal(point:Point);
DisplayObject.localToGlobal(point:Point);

 回复 引用   

#7楼 2008-06-24 11:33 _as80[未注册用户]
一些特别的写法:
1、
mc.gotoAndPlay(Math.random()*10>>0);
Math.random()*10 取 10以内带小数的随机数。
>> 是移位符号 >>0 的功能去除小数点后的数!!(这个方法的确高明)
所以 Math.random()*10>>0 整句话的意思是 获取10以内的随机整数!

-------------------------------------------

推广的想
用在加载进度条中
trace((已经加载的字节数/总字节数}*100>>0+"%")
的确很方便啊


2、
if(i&1){}

i&1 的意思就是判断 i是奇数还是偶数
如果是奇数 i 的2进制表示最后一位是1, i&1=1 真
偶数 i 的2进制表示最后一位是0, i&1=0 假。


3、
var a:Array = new Array();
for (var i:int=0; i<10; a.push(i++)){
//....
}

此循环 执行后 a数组的值为 0,1,2,3,4,5,6,7,8,9.
一个简化程序的方法
能用上的地方有很多。。具体地方具体分析。。


4、
var temp:Number=mouseX;
stage.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
function moveHandler(e:MouseEvent):void {
var d:Number=(-temp+(temp=mouseX));
}
这段代码功能是 获取鼠标移动距离 d
用在鼠标拖拽窗体 或者鼠标拖拽游戏上 真是不要太爽!!!
代码完全可以改为
Mouse.hide();
var temp:Number=mouseX;
stage.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
function moveHandler(e:MouseEvent):void {
var d:Number=(-temp+(temp=mouseX));
spriteMouse.x += d;
e.updateAfterEvent();
}

这样 spriteMouse 这个影片剪辑就成了一个鼠标


5、
function fn1 () {
trace("1");
}
function fn2 () {
trace("2");
}
([fn1,fn2][Math.random()*2>>0])();
这个是随机执行函数的命令 挺有意思的

如 一个欢迎界面
function fn1 () {
trace("你来啦欢迎啊");
}
function fn2 () {
trace("来了你别走啊 ");
}
function fn3 () {
trace("你这么才来啊");
}
function fn4 () {
trace("就猜到你要来");
}
([fn1,fn2,fn3,fn4][Math.random()*4>>0])();


6、
var a:int=3;
if (a>0&&(trace("a is positive number"),a&1))
trace("a is positive odd number");

先执行a>0 真
再执行 trace("a is positive number")
最后判断a是不是奇数
这里的逗号表达式是从左向右执行的。

此用法主要 用来判断有没有执行某处语句 吧


7、
var a:int=13;
var b:int=-12;
if((a^b)>0||(b*=-1,a>10))
trace(b);

又是一个逗号表达式
a^b = -7
b*=-1 b=12
a>10
输出 b=12

 回复 引用   

#8楼[楼主] 2008-06-30 17:49 i'am sl      
垃圾回收机制:强行执行GC()
function GC():void
{
try
{
new LocalConnection.connect("linchenrr");
new LocalConnection.connect("linchenrr");
}
catch (error:Error)
{
trace("clear!");
}
}

附:
对于帧上存在代码的MovieClip,,删除的时候,如果不考虑代码的运行(没有引用指向它,从显示列表中移除),该实例依然占用一定的内存空间.AVM2无法对其垃圾回收,
我们的做法有两种:1.mc.stop,2删除帧内代码(mc.addFrameScript(mc.totalFrames - 1,null);

 回复 引用 查看   

#9楼[楼主] 2008-07-01 17:43 i'am sl      
<< 1 = * 2
<< 2 = * 4
<< 3 = * 8
<< 4 = * 16
...
>> 1 = / 2
>> 2 = / 4
>> 3 = / 8
>> 4 = / 16
...

 回复 引用 查看   

#10楼 2008-07-03 14:12 _as80[未注册用户]
//change color
function changeColor(target_mc:Object,target_color:uint):void{
var colorInfo:ColorTransform = target_mc.transform.colorTransform;
colorInfo.color = target_color;
target_mc.transform.colorTransform = colorInfo;
}

 回复 引用   

#11楼[楼主] 2008-07-04 11:34 i'am sl      
//存储对象一些属性值
var a=new Array()
for(var i=0;i<10;i++)
{
    a[i]={x:10,y:10,name:"n"+i}
}


 回复 引用 查看   

#12楼[楼主] 2008-07-04 11:43 i'am sl      
  //获取容器中指定点下的对象:Array
pointvar location:Point = new Point(target.mouseX, target.mouseY);
location = target.localToGlobal(location);
var objectsBelowMouseInTarget:Array = target.getObjectsUnderPoint(location);


 回复 引用 查看   

#13楼[楼主] 2008-07-11 09:18 i'am sl      
chang colorimport flash.geom.ColorTransform;
mc.transform.colorTransform=new ColorTransform(-1,-1,-1,1,255,255,220,0);

 回复 引用 查看   

#14楼 2008-07-14 16:13 _as80[未注册用户]
//秒转换为时分格式
function secToTime ( secs:int ):String {
var h:int = Math.floor ( secs / 3600);
var m:int = Math.floor ( ( secs - h * 3600 ) / 60 );
var s:int = secs - h * 3600 - m * 60;
return h + " : " + m + " : " + s;
}

 回复 引用   

#15楼[楼主] 2008-07-14 17:33 i'am sl      
图片清理最彻底的方法是:
loader.contentLoaderInfo.content.bitmapdata.dispose()

 回复 引用 查看   

#16楼[楼主] 2008-07-23 17:11 i'am sl      
// \n会被替换成\r
var tf:TextField = new TextField();
tf.text = "各位观众:\n  大家好!";
addChild(tf);
trace(tf.text.indexOf("\n")); //-1
trace(tf.text.indexOf("\r")); //5

 回复 引用 查看   

#17楼[楼主] 2008-07-29 13:47 i'am sl      
// Calculate time
                hours = Math.floor(goTime/3600);
                minutes = Math.floor((goTime/3600-hours)*60);
                seconds = Math.floor(((goTime/3600-hours)*60-minutes)*60);
                milli = Math.floor((goTime-(seconds+(minutes*60)+(hours*3600)))*100);
               
 // Display formatted time
                seconds_txt.text = format(seconds);
                minutes_txt.text = format(minutes);
                hours_txt.text = format(hours);
                milli_txt.text = format(milli);

protected function format(n:Number):String
        {
            if( n < 10 ){
                return ("0"+n);
            }
            return n.toString();
        }

 回复 引用 查看   

#18楼[楼主] 2008-08-06 16:29 i'am sl      
//清除子串左侧空格
function LTrim(s : String):String{
    var i : Number = 0;
    while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 || s.charCodeAt(i) == 9)
    {
        i++;
    }
    return s.substring(i,s.length);
}
//清除子串右侧空格
function RTrim(s : String):String{
    var i : Number = s.length - 1;
    while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 ||s.charCodeAt(i) == 9)
    {
        i--;
    }
    return s.substring(0,i+1);
}

//清除子串两侧空格
function Trim(s : String):String{
    return LTrim(RTrim(s));
}

 回复 引用 查看   

#19楼[楼主] 2008-08-06 16:31 i'am sl      
9
TAB(制表符)
10
换行
13
回车
32
空格

 回复 引用 查看   

#20楼[楼主] 2008-08-06 16:40 i'am sl      
//随机生成字符串 @params:i  代表位数
function GenerateCheckCode():String
{
      //init
      var ran:Number;
      var number:Number;
      var  code:String;
      var checkCode:String ="";
      //get 4 radom
      for(var i:int=0; i<5; i++)
      {
          ran=Math.random();
          number =Math.round(ran*10000);            //get result like 0.1234
          if(number % 2 == 0)
            code = String.fromCharCode(48+(number % 10));        //0's ASCII code is 48
          else
            code = String.fromCharCode(65+(number % 26)) ;        // A's ASCII code is 65
          checkCode += code;
      }
      return checkCode;
}

 回复 引用 查看   

#21楼[楼主] 2008-08-11 15:21 i'am sl      
如何限制TextInput中的输入。其实文本输入控件 TextInput和TextArea都有一个restrict属性,它可以控制TextInput的输入。这个东西挺有用,可以防止输入恶意字符串。不过Flex 帮助文档中对这个属性介绍的不够全面,经过我实验N次,总结出了几条新的经验:
1.如果你想要控制用户只能输入字母和数字,就这样写:restrict="a-zA-Z0-9"。帮助中只给出了一个例子说"a-z"就是只允许输入小写字母,但是没有说如何多重限制,自己实验了一下,终于成功。你按照我上面写的那样做就可以多重限制了,中间不用加空格,我实验过了。
2.帮助文档中写了“^”符号可以限定不允许输入的字符串,比如"^0"就是不允许输入0。同样,帮助中也没有说明如何限定多个字符。实验结果如下:想要控制多个字符的时候需要加括号,这样歇 restrict="^(';:)",就可以限定多个字符了。另外,你想控制的字符有<>这样在MXML中有特殊意义的字符的话,请转换成 < 的形式。至于每个符号的编码是怎么样的,请打开DreamWeaver,在代码编辑器中输入&,然后查看代码提示,方便又快捷!

 回复 引用 查看   

#22楼 2008-09-23 12:56 _as80[未注册用户]
//颜色处理
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);
//var bmd:BitmapData = new BitmapData(mc.width, mc.height, true, 0xFFFFFF);
//bmd.draw(mc)
var pixelValue:uint = bmd.getPixel32(1, 1);
var alphaValue:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alphaValue.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc



 回复 引用   

#23楼 2008-10-07 15:50 _as80[未注册用户]
//取字符串中的中文字符(转成二进制)
var str:String = "w我のhello们";
var last = slice(str);
trace(last); //output 我们

function slice(s:String):String {
var str = "";
for(var i:int=0; i<s.length ; i++) {
if(s.charAt(i).charCodeAt(0).toString(2).length > 14) str += s.charAt(i);
}
return str;
}

//长度
var bArray:ByteArray = new ByteArray();
//bArray.endian = Endian.LITTLE_ENDIAN;
bArray.writeUTFBytes(str);
trace(bArray.length);

 回复 引用   

#24楼 2008-10-08 10:41 _as80[未注册用户]
//判断三角形是逆时针还是顺时针
/**
a/b/c表示点,x/y表示坐标,
cax表示c点x和a点x的差
*/
return cax*bcy>cay*bcx;

 回复 引用   

#25楼[楼主] 2008-10-10 14:55 i'am sl      
//文本强制透明
txt.blendMode = BlendMode.LAYER;
txt.alpha = 0.5;

 回复 引用 查看   

#26楼[楼主] 2008-11-06 18:32 i'am sl      
两次排序(sortOn):
//第一次按照 symbol 然后再按照id排序
var array = [
{id:3, symbol:0, value:"t"},
{id:2, symbol:0, value:"this!"},
{id:5, symbol:1, value:"h"},
{id:4, symbol:3, value:"i"},
{id:0, symbol:4, value:"s"}
];
array.sortOn(["symbol", "id"], [Array.NUMERIC , Array.NUMERIC]);

for(var k in array) { trace(array[k].value);}

 回复 引用 查看