[]动画不显示
使用 Animation.createFrames( 创建动画模版的动画,在调试器和浏览器上显示都正常
但是打包成测试APK,动画却不显示。
游戏有2个图层 ,地图层和一个角色动画,打包成APK后,地图层正常显示,角色动画不显示,打包了几十次都一样。不知道是哪里的问题
附件上APK文件
但是打包成测试APK,动画却不显示。
游戏有2个图层 ,地图层和一个角色动画,打包成APK后,地图层正常显示,角色动画不显示,打包了几十次都一样。不知道是哪里的问题
附件上APK文件
没有找到相关结果
已邀请:
要回复问题请先登录
3 个回复
cqgcs
赞同来自:
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角色动画就不显示了。