首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载多个子图像AS3

加载多个子图像AS3
EN

Stack Overflow用户
提问于 2014-12-20 11:59:35
回答 3查看 168关注 0票数 1

我试图加载2图像到我的闪存文件,但得到一个错误-新的这个AS3的马拉基,任何帮助将不胜感激!

获取错误:51151:名称空间内部的定义请求与定义请求存在冲突。

代码语言:javascript
复制
var myImage:String = dynamicContent.Profile[0].propImage.Url;
var myImage2:String = dynamicContent.Profile[0].prop2Image.Url;

var myImageLoader:StudioLoader = new StudioLoader();
var request:URLRequest = new URLRequest(enabler.getUrl(myImage));
myImageLoader.load(request);
myImageLoader.x =17;
myImageLoader.y = 0;

var myImageLoader2:StudioLoader = new StudioLoader();
var request:URLRequest = new URLRequest(enabler.getUrl(myImage2));
myImageLoader.load(request);
myImageLoader.x =17;
myImageLoader.y = 0;

if(this.currentFrame == 1) {
     addChildAt(myImageLoader, 2);
}

if(this.currentFrame == 2) {
     addChildAt(myImageLoader2, 2);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-20 13:47:29

将重复代码移动到自己的函数中而不是复制+粘贴通常是个好主意:

代码语言:javascript
复制
function loadImage(file:String, x:Number, y:Number):StudioLoader{
    var myImageLoader:StudioLoader = new StudioLoader();
    var request:URLRequest = new URLRequest(file);
    myImageLoader.load(request);
    myImageLoader.x = x;
    myImageLoader.y = y;
    return myImageLoader;
}
addChild(loadImage(enabler.getUrl(myImage1),17,0));
addChild(loadImage(enabler.getUrl(myImage2),17,0));

这不仅为您提供了更好的结构化代码,而且还修复了重复的变量定义问题,因为在函数中本地定义的内容保留在函数中。

这可能提供一些洞察力:

http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/functions.html

票数 2
EN

Stack Overflow用户

发布于 2014-12-20 12:27:27

您不能创建与现有变量同名的新变量,在您的例子中,我指的是您的URLRequest request,因此为了避免这种类型的错误,您可以这样做:

代码语言:javascript
复制
var myImageLoader2:StudioLoader = new StudioLoader();
// assing a new URLRequest to an existing var
request = new URLRequest(enabler.getUrl(myImage2));
// here you want use the myImageLoader2, not myImageLoader
myImageLoader2.load(request);
myImageLoader2.x =17;
myImageLoader2.y = 0;

或:

代码语言:javascript
复制
var myImageLoader2:StudioLoader = new StudioLoader();
// create a new URLRequest var, so the name should be different
var request2:URLRequest = new URLRequest(enabler.getUrl(myImage2));
// here you want use the myImageLoader2, not myImageLoader
myImageLoader2.load(request2);
myImageLoader2.x =17;
myImageLoader2.y = 0;
票数 1
EN

Stack Overflow用户

发布于 2014-12-22 06:14:08

此外,我在第二个块中注意到,您声明了myImageLoader2,但是您随后使用原始的myImageLoader来执行加载请求。因此,即使您声明了一个新的URLRequest,也不会同时加载两个图像。

阿克莫佐的解决方案已经纠正了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27580023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档