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
  • 下载

NJG MiniMap NGUI OnGUI v1.5.7.unitypackage

  • 2016年06月01日 16:45
  • 6.1MB
  • 下载

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

仿sublime的eclipse 插件:miniMap & color theme。构建一个舒适的eclipse 开发环境。
  • sjyhehe
  • sjyhehe
  • 2015年04月03日 23:21
  • 3158

用UGUI实现小地图MiniMap

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

【Unity3D_常用模块】 MiniMap 小地图

模块功能:MiniMap小地图,主要用于各类RPG游戏的预览地图。 所需资源: 1.maskShader.shader:用于做Mask遮罩(也可用uGUI自带的mask,但是边缘会出现锯齿,故放弃) ...
  • Claine
  • Claine
  • 2015年09月16日 10:50
  • 2091

ZT:教程|手把手教你在Unity中实现小地图(Minimap)

原文地址:https://sanwen8.cn/p/128POJ4.html   在Unity中实现小地图(Minimap)需要哪些步骤呢?其实很简单,并且不需要任何编程经验哦。今天这篇文章就...
  • lq0213
  • lq0213
  • 2017年06月16日 09:12
  • 298

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

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

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

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

游手好学教程 – AS3游戏小地图的实现 MiniMap类

来自 游手好学 的文章上周上线的游戏返回数据表明,我的游戏做的比较难,需要加个小地图降低难度,觉得实现小地图的方法还是比较简单的,而且在游戏中比较实用,拿来和大家分享下吧,实现方法其实就是根据缩放比率...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MiniMap组件注释
举报原因:
原因补充:

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