常用代码(一)

1. 拉选框

AreaRect
package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.geom.Point;
    
    
public   class  AreaRect extends Sprite
    {
        
private  var rect:Sprite;
        
private  var point:Point;
        
        
public  function AreaRect()
        {
            rect 
=   new  Sprite();
            stage.addChild(rect);
            stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
        }
        
        
private  function onMouseDown(evt:MouseEvent): void
        {
            point 
=   new  Point(mouseX,mouseY);
            stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
        }
        
        
private  function onMouseMove(evt:MouseEvent): void
        {
            rect.graphics.clear();
            rect.graphics.lineStyle(
2 , 0x0A7CCA , 1 );
            rect.graphics.drawRect(point.x,point.y,mouseX
- point.x,mouseY - point.y); 
        }
        
        
private  function onMouseUp(evt:MouseEvent): void
        {
            stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
        }
    }
}

 

2. FMS文本聊天

Code
<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< s:Application xmlns:fx = " http://ns.adobe.com/mxml/2009 "
               xmlns:s
= " library://ns.adobe.com/flex/spark "
               xmlns:mx
= " library://ns.adobe.com/flex/mx "  initialize = " init() " >
    
< s:layout >
        
< s:BasicLayout />
    
</ s:layout >
    
< fx:Script >
        
<! [CDATA[
            
private  var nc:NetConnection;
            
private  var so:SharedObject;
            
            
private  function init(): void
            {
                nc 
=   new  NetConnection();
                nc.connect(
" rtmp://localhost/virtualShow " );
                nc.client 
=   this ;
                nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
            }
            
            
private  function onNetStatus(evt:NetStatusEvent): void
            {
                trace(evt.info.code);
                
if (evt.info.code == " NetConnection.Connect.Success " )
                {
                    so 
=  SharedObject.getRemote( " myMsg " ,nc.uri, false );
                    so.addEventListener(SyncEvent.SYNC,onSYNC);
                    so.connect(nc);
                }
            }
            
            
private  function onSYNC(evt:SyncEvent): void
            {
                
for (var i: uint = 0 ;i < evt.changeList.length;i ++ )
                {
                    
switch (evt.changeList[i].code)
                    {
                        
case   " change " :
                            updateList();
                            
break ;
                        
case   " clear " :
                            
break ;
                        
case   " success " :
                            
break ;
                        
default :
                            
break ;
                    }
                }
            }
            
            
private  function updateList(): void
            {
                msgList.text 
+=  so.data.msg + " \n " ;
            }
            
            
protected  function onClick( event :MouseEvent): void
            {
                so.setProperty(
" msg " ,txtInput.text);
                msgList.text
+= txtInput.text + " \n " ;
                txtInput.text
= "" ;
            }
            
            
public  function onBWDone(): void {}
        ]]
>
    
</ fx:Script >
    
< fx:Declarations >
        
<!--  将非可视元素(例如服务、值对象)放在此处  -->
    
</ fx:Declarations >
    
< s:TextArea id = " msgList "  x = " 173 "  y = " 37 "  width = " 300 "  height = " 150 " />
    
< s:TextInput id = " txtInput "  x = " 173 "  y = " 218 "  width = " 209 " />
    
< s:Button id = " btnPost "  x = " 399 "  y = " 219 "  label = " 按钮 "  click = " onClick(event) "   />
</ s:Application >

 

3. FMS视频聊天

发布端(Publish.mxml)
<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< s:Application xmlns:fx = " http://ns.adobe.com/mxml/2009 "
               xmlns:s
= " library://ns.adobe.com/flex/spark "
               xmlns:mx
= " library://ns.adobe.com/flex/mx "  initialize = " init() " >
    
< s:layout >
        
< s:BasicLayout />
    
</ s:layout >
    
< fx:Declarations >
        
<!--  将非可视元素(例如服务、值对象)放在此处  -->
    
</ fx:Declarations >
    
< fx:Script >
        
<! [CDATA[
            import mx.core.UIComponent;
            
private  var nc:NetConnection;
            
private  var mic:Microphone;
            
private  var cam:Camera;
            
private  function init(): void
            {
                
// 加载自己的摄像头
                mic  =  Microphone.getMicrophone();
                cam 
=  Camera.getCamera();
                var video:Video 
=   new  Video();
                video.attachCamera(cam);
                var uiBox:UIComponent 
=   new  UIComponent();
                uiBox.addChild(video);
                
this .addElement(uiBox);
                nc 
=   new  NetConnection();
                nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
                nc.connect(
" rtmp://192.168.1.16/virtualShow " );
                nc.client 
=   this ;
            }
            
private  function onNetStatus(evt:NetStatusEvent): void
            {
                trace(evt.info.code);
                
if (evt.info.code == " NetConnection.Connect.Success " )
                {
                    var ns:NetStream 
=   new  NetStream(nc);
                    ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
                    ns.attachAudio(mic);
                    ns.attachCamera(cam);
                    ns.client 
=   this ;
                    ns.publish(
" hxw " , " live " );
                }
            }
            
public  function onBWDone(): void
            {
            }
        ]]
>
    
</ fx:Script >
</ s:Application >

 

接收端(Receive.mxml)
<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< s:Application xmlns:fx = " http://ns.adobe.com/mxml/2009 "
               xmlns:s
= " library://ns.adobe.com/flex/spark "
               xmlns:mx
= " library://ns.adobe.com/flex/mx "  initialize = " init() " >
    
< s:layout >
        
< s:BasicLayout />
    
</ s:layout >
    
< fx:Declarations >
        
<!--  将非可视元素(例如服务、值对象)放在此处  -->
    
</ fx:Declarations >
    
< fx:Script >
        
<! [CDATA[
            import mx.core.UIComponent;
            
private  var nc:NetConnection;
            
private  function init(): void
            {
                nc 
=   new  NetConnection();
                nc.connect(
" rtmp://192.168.1.16/virtualShow " );
                nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
                nc.client 
=   this ;
            }
            
private  function onNetStatus(evt:NetStatusEvent): void
            {
                var ns:NetStream 
=   new  NetStream(nc);
                ns.play(
" hxw " );
                var video:Video 
=   new  Video();
                video.attachNetStream(ns);
                var uiBox:UIComponent 
=   new  UIComponent();
                uiBox.addChild(video);
                
this .addElement(uiBox);
            }
            
public  function onBWDone(): void
            {
            }
        ]]
>
    
</ fx:Script >
</ s:Application >

 

4. PopupManager父窗体传值给子窗体

父窗体
private  function btnAddFrontImg_Click(): void
{
    
// var titleWindow:TitleWindow = PopUpManager.createPopUp(this, UploadImage, true)  as  TitleWindow;
    var titleWindow:UploadImage  =  PopUpManager.createPopUp( this , UploadImage,  true )   as   UploadImage;
    titleWindow.uploadType 
=   " 一个值 "
    PopUpManager.centerPopUp(titleWindow);
}

 

子窗体
public  var uploadType:String = " hxw " ;
private  function onClick( event :MouseEvent): void
{
    Alert.show(uploadType); 
}

 

5. PopupManager子窗体传值给父窗体

父窗体
private  function btnAddFrontImg_Click(): void
{
    
// var titleWindow:TitleWindow = PopUpManager.createPopUp(this, UploadImage, true)  as  TitleWindow; 
    var titleWindow:UploadImage  =  PopUpManager.createPopUp( this , UploadImage,  true )   as   UploadImage;
    titleWindow.addEventListener(
" tw_click " ,update);
    PopUpManager.centerPopUp(titleWindow);
}
private  function update( event :Event): void
{
    Alert.show(
" 测试 " );
}

 

子窗体
private  function onClick( event :MouseEvent): void
{
    dispatchEvent(
new  Event( " tw_click " ));
}

 

6. Bitmap的翻转函数

Code
/* *垂直翻转 */
public   static  function upanddown(bt:BitmapData):BitmapData
{
    var bmd:BitmapData 
=   new  BitmapData(bt.width, bt.height,  true 0x00000000 );
    
for  (var xx: int = 0 ; xx < bt.width; xx ++
    {
        
for  (var yy: int = 0 ; yy < bt.height; yy ++
        {
            bmd.setPixel32(xx, bt.height
- yy - 1 , bt.getPixel32(xx,yy));
        }
    }
    
return  bmd;
}

/* *水平翻转 */         
public   static  function rightandleft(bt:BitmapData):BitmapData 
{
    var bmd:BitmapData 
=   new  BitmapData(bt.width, bt.height,  true 0x00000000 );
    
for  (var yy: int = 0 ; yy < bt.height; yy ++
    {
        
for  (var xx: int = 0 ; xx < bt.width; xx ++
        {
            bmd.setPixel32(bt.width
- xx - 1 , yy, bt.getPixel32(xx,yy));
        }
    }
    
return  bmd;
}

/* *90翻转 */         
public   static  function turn90(bt:BitmapData):BitmapData 
{
    var bmd:BitmapData 
=   new  BitmapData(bt.height, bt.width,  true 0x00000000 );
    
for  (var yy: int = 0 ; yy < bt.height; yy ++
    {
        
for  (var xx: int = 0 ; xx < bt.width; xx ++
        {
            bmd.setPixel32(yy,bt.width
- xx, bt.getPixel32(xx,yy));
        }
    }
    
return  bmd;
}

/* *270翻转 */  
public   static  function turn270(bt:BitmapData):BitmapData 
{
    var bmd:BitmapData 
=   new  BitmapData(bt.height, bt.width,  true 0x00000000 );
    
for  (var yy: int = 0 ; yy < bt.height; yy ++
    {
        
for  (var xx: int = 0 ; xx < bt.width; xx ++
        {
            bmd.setPixel32(bt.height
- yy - 1 ,bt.width - xx, bt.getPixel32(xx,yy));
        }
    }
    
return  bmd;
}

 

7. Flex打包swc文件

FlexSDK中的compc命令可以将那些带包名的as文件编译成swf文件,并打包成一个文件,文件的扩展名是.swc,在Flash中这叫组件。其实组件文件格式实际上是zip, 把扩展名.swc改成.zip用winrar打开看看就知道了

假如是自己开发,可以先在本地把目录规划好,调试无误以后在单独拿出去打包

假如在"D:\项目\Tool\huxiaowei\classes"目录下有两个AS文件"GameTask.as","MovieTask.as",在Adobe Flex 3 SDK Command Prompt命令行下输入:

cd 项目\tool

compc 
- include - sources huxiaowei\classes\ output d: / hxwLib.swc

这样就将两个AS文件打包到d:\下名为hxwLib.swc包里了

在项目里就可以删除掉AS文件,只需要再ActionScript Build Path -> Library Path -> Add SWC下应用这个hxwLib.swc即可

PS:如果有一个AS是基于hxwLib.swc编写的,如果要将这个as编译成不必依赖组件的swf(即可以单独存在),可以进一步在命令行运行:

amxmlc  - library - path = c: / 3rd.swc HelloWorld. as

flashplayer HelloWorld.swf

 

8. 阻止事件冒泡

Event提供两个方法来阻止事件冒泡,evt.stopImmediatePropagation()和evt.stopPropagation()

如果某对象的一个事件同时添加多个监听,stopPropagation将把该事件注册的所有监听处理函数执行完后,再阻止该事件继续向上冒泡;而stopImmediatePropagation方法将本次处理函数执行完后就立即阻止事件继续向上冒泡(即同一事件的其它监听函数将不会执行)。

如果某对象的一个事件有多个监听,stopPropagation()将处理完所有的监听后,再阻止该事件冒泡;而stopImmediatePropagation()仅处理本次监听,然后立即阻止事件冒泡

Code
package
{
    import flash.display.Sprite;
    import flash.display.StageScaleMode;
    import flash.events.MouseEvent;
    import flash.events.TextEvent;
    
    
public   class  Test extends Sprite
    {
        
public  function Test()
        {
            stage.scaleMode 
=  StageScaleMode.NO_SCALE;
            
            var box:Sprite 
=   new  Sprite();
            
this .addChild(box);
            with(box)
            {
                graphics.beginFill(
0xCCCCCC );
                graphics.drawRect(
0 , 0 , 200 , 200 );
                graphics.endFill();
                addEventListener(MouseEvent.CLICK,onBoxClick);
            }
            
            var item:Sprite 
=   new  Sprite();
            box.addChild(item);
            with(item)
            {
                graphics.beginFill(
0x000000 );
                graphics.drawRect(
0 , 0 , 100 , 100 );
                graphics.endFill();
                x 
=  y  =   50 ;
                addEventListener(MouseEvent.CLICK,onItemClick,
false , 1 );
                addEventListener(MouseEvent.CLICK,onItemClick2,
false , 2 );
            }
        }
        
        
private  function onBoxClick(evt:MouseEvent): void
        {
            trace(
" box click " );
        }
        
        
private  function onItemClick(evt:MouseEvent): void
        {
            trace(
" item click 1 " );
        }
        
        
private  function onItemClick2(evt:MouseEvent): void
        {
            trace(
" item click 2 " );
            
// 不再执行onItemClick
            
// evt.stopImmediatePropagation();
            
            
// 还是会执行onItemClick
            evt.stopPropagation();
        }
    }
}

 

9. 遍历对象属性

Code
var obj:Object  =   new  Object();
obj.aa 
=   " AAA " ;
obj.bb 
=   " BBB " ;
obj.cc 
=   " CCC " ;

for (var str:String  in  obj)
{
    trace(
" 属性 " + str + " 的值是: " + obj[str]);
}

// 只能获得属性的value,不能获得key
for   each(var p:String  in  obj) { 
    trace(p); 
}

 

10. 用代码去执行一个对象的点击事件

sprite1.dispatchEvent( new  MouseEvent(MouseEvent.CLICK));

 

 

你可能感兴趣的:(代码)