zoukankan      html  css  js  c++  java
  • arpg网页游戏之地图(四)

    这一节主要是针对上一节的补充,关于地图的优化策略上一节中已经涉及了一些,这一节具体说下。

    1. 地图块加载队列:就拿1280*800的屏幕分辨率来讲,大约需要加载的地图块为30~35块之间,如果这个时候一下子加载这么多地图块,占用的网络带宽会比较多,因为IE加载资源也是有限制的,如果多余限制就会加入排队机制。所以这个时候,就需要一个地图加载队列,来限制同时加载地图块的数量,比如可以同时加载两个,当两个当中哪个Loader加载完,此对象回收,然后重新下一个。
    2. 渲染策略优化,实际就是分帧运算的远离。即没帧只加载一个地图块,并且只draw一块已经下载完的地图。代码参考上一节。
    3. 进入地图之前,先显示马赛克。代码如下:
    public function set thumbnail(bmd:BitmapData) : void
            {
                if (thumbnailData == bmd)
                    return;
                thumbnailData = bmd;
                g.clear();
                g.beginBitmapFill(thumbnailData, scaleMatrix);
                g.drawRect(0, 0, viewPort.maxRect.width, viewPort.maxRect.height);
            }

    还有两个问题:

    1. 切换地图之前,要把之前加载的地图块销毁,并且触发一次垃圾回收,这样会有效的减少内存。地图销毁,包括已经加载完成,正在加载的,加载完成未显示的都要销毁。Flash 回收机制的策略是对象的引用次数为0,然后就会回收。触发Flash强制垃圾回收,需要创造一个异常,代码如下:private
    private function gcByException():void        
    {
                try
                {
                    new LocalConnection().connect("foo");
                    new LocalConnection().connect("foo");
                } 
                catch (e:Error)
                {
                } 
                return;
    }

          2.震屏的实现(TweenMax实现):

    public static function shake(target:DisplayObject, distance:int = 10, delay:Number = 0.5): void
            {
                var targetX:* = target.x;
                var targetY:* = target.y;
                var shakeDis:* = distance;
                TweenMax.killTweensOf(target);
                TweenMax.to(target, delay, {bezierThrough:[{x:targetX, y:targetY + distance}, {x:targetX, y:targetY - distance},  {x:targetX, y:targetY + distance/4}, {x:targetX, y:targetY - distance/4},{x:targetX, y:targetY}]});
                return;
            }
    关于游戏推图基本就这些内容,此工程比较独立,可以单独编译成一个单独的swc,以供使用。
  • 相关阅读:
    对于在git上面拉代码报"error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054"解决方法
    在vue项目中如何添加eslint
    vscode编辑如何保存时自动校准eslint规范
    css3动画
    JS中的深拷贝与浅拷贝
    JS中的防抖与节流
    金三银四求职季,前端面试题小梳理(HTML、CSS、JS)
    正则表达式元字符大整理
    常规正则表达式练习,一起来开心的掉发吧
    关于子元素的margin-top对父级容器无效
  • 原文地址:https://www.cnblogs.com/Siegel/p/5977678.html
Copyright © 2011-2022 走看看