加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
var bitmap = ImageManager.loadEnemy("Bat", 0); this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
var bitmap = ImageManager.loadEnemy("Bat", 0);
this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
本来我想通过这种方式描绘一个敌人的战斗图,结果什么也没有绘制。
于是我加了一行调试语句:
var bitmap = ImageManager.loadEnemy("Bat", 0); console.log(bitmap._isLoading, bitmap.width, bitmap.height); this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
var bitmap = ImageManager.loadEnemy("Bat", 0);
console.log(bitmap._isLoading, bitmap.width, bitmap.height);
this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
结果控制台的输出是
实验一:如果我在游戏启动前现在控制台里执行
ImageManager.loadEnemy("Bat", 0);
ImageManager.loadEnemy("Bat", 0);
这样图片就能正确绘制了。
实验二:如果用ImageManager.loadSystem加载一个小图标,就不会出现这样的问题。
实验三:在这个窗口的update函数里不断调用这些语句,而不是只在创建时调用一次,也能解决这个问题。根据控制台输出,只有窗口创建时那一次输出是true 0 0,后面每一次都是正常的false 48 48。
我怀疑是MV引擎是异步加载位图,而不是等待位图加载再往下执行。求大神解释。另外,不知道有没有什么好的解决方案。。 |