• 常用代码(一)


    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, true0x00000000);
        
    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, true0x00000000);
        
    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, true0x00000000);
        
    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, true0x00000000);
        
    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));
  • 相关阅读:
    数据结构的理解
    等价、偏序和全序
    等价、偏序和全序
    二叉树与树的理解
    SICP 习题 (2.10)解题总结: 区间除法中除于零的问题
    div:给div加滚动栏 div的滚动栏设置
    textarea文本域宽度和高度(width、height)自己主动适应变化处理
    OSX: 逻辑卷管理系统Core Storage(1)
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    string实现
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/1778107.html
Copyright © 2020-2023  润新知