创建没有任务栏图标的窗体(下雪效果)


            要说这下雪效果真的是太老土了,不过今天为了演示如何创建无任务栏图标的窗体,就暂时就它吧,呵呵。

            首先看一下代码结构:

打开flash cs3,新建一个AIR文档,保存为Snow.fla文件,文档类中填写Main,然后在同目录下新建一个Main.as文件,在其中写入经下代码:
package
{
    import flash.desktop.DockIcon;
    import flash.desktop.NativeApplication;
    import flash.desktop.SystemTrayIcon;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.NativeMenu;
    import flash.display.NativeMenuItem;
    import flash.display.NativeWindow;
    import flash.display.NativeWindowInitOptions;
    import flash.display.NativeWindowSystemChrome;
    import flash.display.NativeWindowType;
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.system.Capabilities;
    import flash.utils.Timer;
    /**
    * ...
    * @author Jaja
    */
    public class Main extends Sprite
    {
        private var snowWindow:NativeWindow;
        private var rootMenu:NativeMenu = new NativeMenu;
        private var quitItem:NativeMenuItem = new NativeMenuItem("退出");
        private var timer:Timer = new Timer(50);
       
        public function Main():void
        {
            buildNewWindow();
            buildMenu();
            configListeners();
            timer.start();
            buildTray();
            stage.nativeWindow.close();
        }
       
        private function buildNewWindow():void {
            snowWindow = getWindow(false, false, false, true);
            snowWindow.x = 0;
            snowWindow.y = 0;
            snowWindow.width = Capabilities.screenResolutionX;
            snowWindow.height = Capabilities.screenResolutionY;
            snowWindow.alwaysInFront = true;
            snowWindow.activate();
        }
       
        private function buildMenu():void {
            rootMenu.addItem(quitItem);
        }
       
        private function configListeners():void {
            quitItem.addEventListener(Event.SELECT, function() { snowWindow.close(); } );
            timer.addEventListener(TimerEvent.TIMER, snow);
        }
       
        private function snow(event:TimerEvent):void {
            var flower:SnowFlower = new SnowFlower;
            snowWindow.stage.addChild(flower);
        }
       
        private function buildTray():void {
            var sprite:Sprite = new Sprite;
            sprite.graphics.beginFill(0xFFFFFF);
            sprite.graphics.drawCircle(8, 8, 8);
            sprite.graphics.endFill();
           
            var bitmapData:BitmapData = new BitmapData(16, 16, true, 0x00FFFFFF);
            bitmapData.draw(sprite);
           
            var bitmap:Bitmap = new Bitmap(bitmapData);
            NativeApplication.nativeApplication.icon.bitmaps = [bitmap];
            SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = rootMenu;
        }
       
        private function getWindow( showTaskIcon:Boolean = true, resizable:Boolean = true, maximizable:Boolean = true, transparent:Boolean = false):NativeWindow {
            var option:NativeWindowInitOptions = new NativeWindowInitOptions;
            option.resizable = resizable;
            option.maximizable = maximizable;
            if(transparent){
                option.systemChrome = NativeWindowSystemChrome.NONE;
                option.transparent = true;
            }
            if(!showTaskIcon){
                option.type = NativeWindowType.UTILITY;
            }
            var win:NativeWindow = new NativeWindow(option);
            var stage:Stage = win.stage;
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            win.width = 400;
            win.height = 300;
            return win;
        }
       
    }
   
}

若要运行此例我们还需要一个SnowFlower类。
在同目录下新建一个SnowFlower.as,在其中输入以下代码:
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.system.Capabilities;
   
    /**
    * ...
    * @author Jaja
    */
    public class SnowFlower extends Sprite
    {
        private var speedX:int = 0;
        private var speedY:int = 0;
       
        public function SnowFlower() :void
        {
            buildFlower();
            initSpeed();
            initLocal();
            configListeners();
        }
       
        private function buildFlower():void {
            graphics.beginFill(0xFFFFFF, Math.random() * 0.5 + 0.5);
            graphics.drawCircle(0, 0, Math.random() * 5);
            graphics.endFill();
        }
       
        private function initSpeed():void {
            speedX = Math.random() * 6 - 3;
            speedY = Math.random() * 5 + 5;
        }
       
        private function initLocal():void {
            this.x = Capabilities.screenResolutionX * Math.random();
            this.y = -10;
        }
       
        private function configListeners():void {
            this.addEventListener(Event.ENTER_FRAME, movingFlower);
        }
       
        private function movingFlower(event:Event):void {
            this.x += speedX;
            this.y += speedY;
            if (this.x > Capabilities.screenResolutionX) {
                this.removeEventListener(Event.ENTER_FRAME, movingFlower);
                try {
                    this.parent.removeChild(this);
                }catch (error:Error) {
                   
                }
            }
        }
       
    }
   
}

好了,Ctrl+Enter运行我们的实例,看看效果吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值