[]关于Laya.loader.load和getRes的问题

我正在阅读这个示例:https://layaair.ldc.layabox.co ... Image 

以下是原文的代码,也是我疑问的地方:
// 方法2:使用drawTexture
Laya.loader.load("../../../../res/apes/monkey2.png", Handler.create(this, function():void
{
var t:Texture = Laya.loader.getRes("../../../../res/apes/monkey2.png");
var ape:Sprite = new Sprite();
ape.graphics.drawTexture(t,0,0);
Laya.stage.addChild(ape);
ape.pos(200, 0);
}));
 这可以正常运行,但是我把外面的 load 函数去掉,将第二个参数中的函数内容独立后却不能显示图片:
var t:Texture = Laya.loader.getRes("../../../../res/apes/monkey2.png");
var ape:Sprite = new Sprite();
ape.graphics.drawTexture(t,0,0);
Laya.stage.addChild(ape);
ape.pos(200, 0);
我初步查看了源码,发现 load 的第二个参数是一个回调 Handler ,于是我猜想 load 负责将读取到的图片存入缓存中,然后在回调里通过 getRes 调用从缓存中读取。继续查看源码后,我发现 getRes 实际上是从 loadedMap 中获取资源,也就是说,getRes 只会从缓存中读取。
如果不使用 load ,那么 getRes 就无法获得图片,最终图片自然也无法正常显示。

那么我的问题是,能不能在回调的 Handler 中直接获取到 Texture 而不是再次调用 getRes ?
我在 load 函数的参数说明中,看到第二个参数是这么解释的:


* @param complete    加载结束回调。根据url类型不同分为2种情况:1. url为String类型,也就是单个资源地址,如果加载成功,则回调参数值为加载完成的资源,否则为null;2. url为数组类型,指定了一组要加载的资源,如果全部加载成功,则回调参数值为true,否则为false。


对于粗体字,不是很理解,希望回答时也能解释一下。
感谢回答。

theLayaBoxer

赞同来自:

感谢@cry_11858 的帮助,我修改代码成了这样子,成功显示了图片 :) :
Laya.loader.load("../../../../res/apes/monkey2.png", Handler.create(this, function(result:*):void
{
var t:Texture = result;
var ape:Sprite = new Sprite();
ape.graphics.drawTexture(t,0,0);
Laya.stage.addChild(ape);
ape.pos(200, 0);
}));
毕竟重复使用字符串还是太不编程了 XD 这样写执行速度应该也会更快一点点?

cuixueying

赞同来自:

1、使用drawTexture方法,用到的图片必须提前预加载
2、获得Texture,你要通过路径去获取指定的纹理,如果你加载了很多资源,不用getRes,如何知道你要获取哪个Texture呢
 

要回复问题请先

商务合作
商务合作