MiniMap组件注释

原创 2007年10月05日 10:41:00
MiniMap组件注释

package components
{
    /*
        原作者:AdrewRice
        注释:Albert http://blog.csdn.net/zinking3
     * */
    import mx.containers.Panel;
    import mx.controls.Image;
    import flash.events.TimerEvent;
    import flash.display.BitmapData;
    import flash.geom.Matrix;
    import flash.geom.Rectangle;
    import flash.utils.Timer;
    import mx.core.UIComponent;
    import flash.display.Bitmap;
    import mx.core.Container;
    import flash.display.DisplayObject;
    import mx.containers.Canvas;
    import mx.effects.easing.Back;

    public class MiniMap extends Panel
    {
        public static const WIDTH : Number = 200;
        public static const HEIGHT : Number = 400;
       
        public var targetUIComponent : UIComponent;//作用的显示组件
       
        private var tx : Number = 0;
        private var ty : Number = 0;
        private var ts : Number = 0;//缩放参数,因为是MINIMAP而不是和原来一样大
       
        private var img : Image;//快照
        private var bd : BitmapData;//对UI组件生成的快照数据
        private var m : Matrix;//用来缩放的矩阵
        private var timer : Timer;//定时器
       
       
        public function MiniMap()
        {
            super();
            title = "Mini Map";
            horizontalScrollPolicy = "off";
            verticalScrollPolicy = "off"//设置基类的一些属性
           
            img = new Image();
            img.percentWidth = 100;//PERCENT WIDTH使此组件能够适应伸缩
            img.visible = true;
            this.addChild( img );//将位图添加到此组件的显示列表
           
            bd = new BitmapData( WIDTH, HEIGHT );
            m = new Matrix();
           
            timer = new Timer( 500 );
            timer.addEventListener( TimerEvent.TIMER, onTimerEvent );
           
            timer.start();//初始化成员
        }
       
        private function onTimerEvent( event : TimerEvent ) : void
        {
            try
            {
               
                if ( targetUIComponent != null )
                {
                    var minx:int;
                    var maxx:int;
                    var miny:int;
                    var maxy:int;
                    var w:int = 0;
                    var h:int = 0;//临时变量用来获得一些数据
           
                    if ( targetUIComponent.numChildren > 0 )//当作用的UI组件有子组件的时候
                    {
                       
                        for ( var i : int = 0; i < targetUIComponent.numChildren; i ++ )//遍历这些子组件
                        {
                            var child : DisplayObject = targetUIComponent.getChildAt( i );//获得第I个位置的子组件
                            if ( i == 0 )
                            {
                                minx = child.x;//最小的X值
                                maxx = child.x;//最大的X值
                                miny = child.y + child.width;
                                maxy = child.y + child.height;//初始时候设置临时变量
                            }
                            else
                            {
                                minx = Math.min( minx, child.x );
                                miny = Math.min( miny, child.y );
                                maxx = Math.max( maxx, child.x + child.width );
                                maxy = Math.max( maxy, child.y + child.height );
                                //遍历完成之后,获得一个矩形区域,该区域涵盖了所有的显示子组件,为生成位图做准备
                            }
                           
                        }
                       
                        w = maxx - minx;//获得该矩形区域的宽
                        h = maxy - miny;//获得该矩形区域的高
                       
                        tx = WIDTH / w ;//缩放X向尺度
                        ty = HEIGHT / h ;//缩放Y向尺度
                    }
                    else
                    {
                        tx = WIDTH / (targetUIComponent.width / targetUIComponent.scaleX) ;
                        ty = HEIGHT / (targetUIComponent.height / targetUIComponent.scaleY) ;
                        //如果UI对象的子组件为空,那么设置其缩放系数
                    }
                   
                    ts = Math.min( tx, ty );//选取缩放系数,X和Y的最小值
                   
                    bd.fillRect( new Rectangle(0,0,WIDTH,HEIGHT), 0xFFFFFF );
                    m.identity();//初始化变换举证
                    m.scale( ts, ts );//设置缩放系数
                    m.translate( -minx*ts, -miny*ts );
                    bd.draw( targetUIComponent, m );//关键:获得缩放后的快照到BD
                    img.source = new Bitmap( bd );//设置图像
               
                }
            }
            catch( e:Error )
            {
               
            }
        }
       
    }
}

使用方法:
<components:MiniMap
        targetUIComponent="{ mapper.renderer }"
        creationCompleteEffect="Fade"
        right="10" top="25" bottom="25" width="232"/>




 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

jquery sortable组件配置参数中文注释及demo

jquery sortable组件配置参数中文注释及demo

Minimap小地图

  • 2017-06-12 22:49
  • 3.11MB
  • 下载

eclipse 两款UI美化插件推荐 miniMap & color theme

仿sublime的eclipse 插件:miniMap & color theme。构建一个舒适的eclipse 开发环境。

minimap迷你地图

  • 2011-06-17 16:27
  • 175KB
  • 下载

用UGUI实现小地图MiniMap

之前写的几篇博客当中图片不知为何消失 看到后就赶紧重新上传图片 写的不好还没有图片 很是抱歉 今天分享一个用UGUI实现游戏场景的小地图   先看一下效果吧 移动cube的话左上角的小地图中的小绿点也...

用Ogre生成天龙八部的lightmap和minimap的简单方法

自从在一家创业小公司当了客户端主程以后,就忙的没有时间写博客了,整个公司没有一个人有完整的项目经验,所有一切都在摸索中前进,但初生牛犊不怕虎,项目还算进展顺利。但我始终认为,安静下来总结整理一下工作心...

Unity 制作小地图(Minimap)系统 两种方法

Unity 制作小地图系统 总结 参考官方教程:Creating A Minimap System 完整Github项目:TanksPluggableAI   这个小地图添加在上一篇中AI坦...

Bing Maps进阶系列五:通过DeepEarth的MiniMap控件为Bing Maps扩展迷你小地图

Bing Maps Silverlight Control虽然为我们提供了简洁、方便的开发模型,但也有许多不足之处,比如我们想实现一个迷你小地图功能,对于Bing Map Silverlight Co...

小地图的制作,游戏中的导航仪,minimap制作(继续我们的仙剑demo)

我们继续白天的话题,白天列出了还有哪些东西需要后续的讲解,今晚我们就来讨论下小地图,说实话,小地图这个概念在u3d里面因为有透视相机的出现,制作起来简单的不能再简单了,看看代码/// /// Min...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)