[]动画不显示

使用  Animation.createFrames(  创建动画模版的动画,在调试器和浏览器上显示都正常
但是打包成测试APK,动画却不显示。
游戏有2个图层 ,地图层和一个角色动画,打包成APK后,地图层正常显示,角色动画不显示,打包了几十次都一样。不知道是哪里的问题
附件上APK文件
已邀请:

cqgcs

赞同来自:

APK文件没法加入附件。我把全部源码贴出来吧
 
package {
    import laya.utils.Handler;
    import laya.display.Text;
    import laya.display.Animation;
    import laya.webgl.WebGL;
    import laya.media.Sound;
    import laya.webgl.shapes.Ellipse;
    import laya.display.Stage;
    import laya.ui.Label;
    import laya.events.Event;
    import laya.utils.Browser;
    import laya.utils.Timer;
    import laya.display.Sprite;
    import laya.net.Loader;
    import laya.ui.TextArea;
    import laya.resource.Texture;
    import laya.maths.Point;
    import laya.utils.Tween;
    import laya.d3.resource.models.PrimitiveMesh;
    import laya.debug.DebugPanel;
    import laya.debug.DebugTool;
    import laya.debug.ui.debugui.DebugPanelUI;
    import laya.device.motion.AccelerationInfo;

    public class LayaSample {
        
        private var m_bkSound:Sound;
        private var m_mapLayer:Sprite;
        private var m_MapImgUrl:String;
        private var m_Role:Animation;
        private var m_RolePosition:Point = new Point(1200,1000);
        private var m_MovStartPos:Point = new Point();
        private var m_MovDistanceX:int = 0 ;
        private var m_MovDistanceY:int = 0 ;
        private var m_IsMoving:Boolean = false;
        private var m_MovStartTime:Number = 0;
        private var m_MovNeedMs:Number = 0 ; 
        private var m_speed:Number = 150; //每秒移动像素
        private var m_curdirection:int = 0 ;
        private var m_curaniname:String = "";

        public function LayaSample() {
            //初始化引擎,建议增加WebGl模式 舞台全屏 全屏
            Laya.init(720/2 ,1280/2,WebGL);
            Laya.stage.bgColor = "#000000";
            Laya.stage.scaleMode = Stage.SCALE_FIXED_AUTO;

            //背景音乐
            m_bkSound = new Sound();
            m_bkSound.load("Res/Sound/City.mp3");
            m_bkSound.play();

            //添加地图层
            m_MapImgUrl = "Res/Map/map.jpg";
            m_mapLayer = new Sprite();
            Laya.stage.addChild(m_mapLayer);

            //添加角色对象
            m_Role = new Animation();
            Laya.stage.addChild(m_Role);
            
            //异步加载资源
            var urls:Array = [];
            for (var dir:int = 0 ; dir < 8; dir ++)
            {
                for (var i:int = 0 ; i < 4 ; i ++)
                {
                    urls.push("Res/atlas/array/stand/" + ((dir*4) + i) + ".png");
                }
                for (var j:int = 0 ; j < 8 ; j ++)
                {
                    urls.push("Res/atlas/array/run/" + ((dir*8) + j) + ".png");
                }
            }
            urls.push(m_MapImgUrl);

            Laya.loader.load(urls,Handler.create(this,loadResourceComplated));
        }

        private function loadResourceComplated(e:*=null):void
        {
            //开始异步加载资源
            Laya.loader.load(m_MapImgUrl,Handler.create(this,onLoadMapComplated));

            //创建角色帧
            createRoleFrames();

            Laya.stage.on(Event.RESIZE,this,on_stage_resize);
            Laya.stage.on(Event.MOUSE_DOWN,this,on_map_mousedown);
            Laya.timer.frameLoop(1,this,calcMoving);
        }

        private function on_stage_resize():void
        {
            if (this.m_IsMoving)
            {
                m_Role.pos((Laya.stage.width - 27)/2,(Laya.stage.height - 75)/2);
            }
            else{
                m_Role.pos((Laya.stage.width - 14)/2 + 15,(Laya.stage.height - 75)/2);
            }
            m_mapLayer.pos((m_RolePosition.x - Laya.stage.width/2)*-1,(m_RolePosition.y - Laya.stage.height/2) *-1);
        }

        private function onLoadMapComplated():void
        {
            var tex:Texture = Laya.loader.getRes(m_MapImgUrl);
            m_mapLayer.graphics.drawTexture(tex);
            m_mapLayer.width= tex.width;
            m_mapLayer.height = tex.height;
            this.on_stage_resize();
        }

        private function on_map_mousedown():void
        {
            this.m_IsMoving = false;
            var ptStart:Point = new Point((Laya.stage.width + 27)/2 ,(Laya.stage.height + 75)/2);
            var ptTo:Point = new Point(Laya.stage.mouseX,Laya.stage.mouseY);
            this.m_MovDistanceX = ptTo.x - ptStart.x;
            this.m_MovDistanceY = ptTo.y - ptStart.y;
            
            if (this.m_MovDistanceX >0 && this.m_mapLayer.x - this.m_MovDistanceX <= (this.m_mapLayer.width - Browser.width)*-1 )
            {
                //this.m_MovDistanceX = 0;
                //ptTo.x = ptStart.x;
            }
            if (this.m_MovDistanceX <0 && this.m_mapLayer.x - this.m_MovDistanceX >= 0)
            {
                //this.m_MovDistanceX = 0;
                //ptTo.x = ptStart.x;
            }
            if (this.m_MovDistanceY >0 && this.m_mapLayer.y - this.m_MovDistanceY <= (this.m_mapLayer.height - Browser.height)*-1 )
            {
                //this.m_MovDistanceY = 0;
                //ptTo.y = ptStart.y ;
            }
            if (this.m_MovDistanceY <0 && this.m_mapLayer.y - this.m_MovDistanceY >= 0)
            {
                //this.m_MovDistanceY = 0;
                //ptTo.y = ptStart.y;
            }

            if ( Math.abs(this.m_MovDistanceX) > 1 && Math.abs(this.m_MovDistanceY) >1 )
            {
                var distance:Number = Math.sqrt(m_MovDistanceX*m_MovDistanceX + m_MovDistanceY*m_MovDistanceY);
                this.m_MovStartPos = new Point(this.m_RolePosition.x,this.m_RolePosition.y);
                this.m_MovStartTime = Browser.now();
                this.m_MovNeedMs = distance * 1000/m_speed;
                if (this.m_MovNeedMs > 100 )
                {
                    this.m_IsMoving = true ;
                    //计算方向
                    var ang:Number = Math.atan2((ptTo.y - ptStart.y), (ptTo.x - ptStart.x)) * 180 / Math.PI;
                    if (ang < 0) ang = 360 + ang;
                    var dir:int ;
                    if (ang >= 337.5 || ang <= 22.5) dir = 2;
                    else if (ang >= 22.5 && ang <= 67.5 ) dir = 3;
                    else if (ang >= 67.5 && ang <= 112.5) dir= 4;
                    else if (ang >= 112.5&& ang <= 157.5) dir = 5;
                    else if (ang >= 157.5&& ang <= 202.5) dir = 6;
                    else if (ang >= 202.5&& ang <= 247.5) dir = 7;
                    else if (ang >= 247.5&& ang <= 292.5) dir = 0;
                    else dir = 1;
                    
                    this.m_curdirection = dir ;
                    if (m_curaniname != "run"+this.m_curdirection)
                    {
                        m_curaniname = "run"+this.m_curdirection;
                        m_Role.play(0,true,m_curaniname);
                    }
                }
            }
            if (!m_IsMoving)
            {
                if (m_curaniname != "stand"+this.m_curdirection)
                { 
                    m_curaniname="stand"+this.m_curdirection;
                    m_Role.play(0,true,m_curaniname);
                }
            }
        }

        private function createRoleFrames(e:*=null):void
        {
            for (var dir1:int = 0 ; dir1 < 8; dir1 ++)
            {
                var urls1:Array = [];
                for (var i1:int = 0 ; i1 < 4 ; i1 ++)
                {
                    urls1.push("Res/atlas/array/stand/" + ((dir1*4) + i1) + ".png");
                }
                var name1:String ;
                switch(dir1){
                    case 0:name1 = "stand4";break;
                    case 1:name1 = "stand5";break;
                    case 2:name1 = "stand6";break;
                    case 3:name1 = "stand7";break;
                    case 4:name1 = "stand0";break;
                    case 5:name1 = "stand1";break;
                    case 6:name1 = "stand2";break;
                    case 7:name1 = "stand3";break;
                    default:break;
                }
                Animation.createFrames(urls1,name1);
            }

            for (var dir:int = 0 ; dir < 8; dir ++)
            {
                var urls:Array = [];
                for (var i:int = 0 ; i < 8 ; i ++)
                {
                    urls.push("Res/atlas/array/run/" + ((dir*8) + i) + ".png");
                }
                var name:String ;
                switch(dir){
                    case 0:name = "run4";break;
                    case 1:name = "run5";break;
                    case 2:name = "run6";break;
                    case 3:name = "run7";break;
                    case 4:name = "run0";break;
                    case 5:name = "run1";break;
                    case 6:name = "run2";break;
                    case 7:name = "run3";break;
                    default:break;
                }
                Animation.createFrames(urls,name);
            }
            m_Role.interval = 500/8;
            m_curaniname = "stand"+this.m_curdirection;
            m_Role.play(0,true,m_curaniname);
            this.on_stage_resize();
        }

        private function calcMoving():void
        {
            if (!this.m_IsMoving)
            {
                return ;
            }
            //计算当前应该在得坐标
            var pos:Point = new Point();
            var escapeMS:int = Browser.now() - m_MovStartTime;
            if (escapeMS >= this.m_MovNeedMs)
            {
                this.m_RolePosition.x = this.m_MovStartPos.x + this.m_MovDistanceX;
                this.m_RolePosition.y = this.m_MovStartPos.y + this.m_MovDistanceY;
                this.m_IsMoving = false;
                if (m_curaniname != "stand"+this.m_curdirection)
                { 
                    m_curaniname="stand"+this.m_curdirection;
                    m_Role.play(0,true,m_curaniname);
                }
                on_stage_resize();
            }
            else
            {
                var offsetX:int = escapeMS * this.m_MovDistanceX/m_MovNeedMs;
                var offsetY:int = escapeMS * this.m_MovDistanceY/m_MovNeedMs;
                if (Math.abs(offsetX) >0 || Math.abs(offsetY) > 0)
                {
                    this.m_RolePosition.x = this.m_MovStartPos.x + offsetX;
                    this.m_RolePosition.y = this.m_MovStartPos.y + offsetY;
                    on_stage_resize();
                }
            }
        }
         

    }
}

cuixueying

赞同来自:

方便把你可以运行的例子提供下吗?

cqgcs

赞同来自:

我把整个项目打包进去了,麻烦帮我看一下吧。
调试的时候正常,打包成APKjue角色动画就不显示了。

要回复问题请先

商务合作
商务合作