我使用Adobe CS3编写了这段代码,最近升级到了CS5。我没有永远触及这个网站,我最后一次做到这一点很有效。问题如下。
页面类型:图库 问题:传递变量
这是我上次检查时起作用的原始代码,但此后一直停止工作。
function onClick(e:MouseEvent):void
{
trace(e.currentTarget.name);
loadPics(e.currentTarget.name);
}
这是onClick函数。最棒的是,迹线吐出了照片的正确路径。问题发生在loadPics()函数中。正如您所看到的,我正在将相同的路径(正确打印到屏幕的路径)传递给该函数。这是函数的代码,如果它有点乱,我道歉。
function loadPics(pic):void
{
photoLoader.source = pic;
photoLoader.y = 10;
photoLoader.x = 10;
loaderHolder.addChild(photoLoader);
//trace (pic.name) yields nothing
//trace (photoLoader.source.name) yields nothing
//trace (photoLoader.name) yields the default instanceXX name
if(photoLoader.source.width > photoLoader.source.height)
{
trace("landscape");
}
else if(photoLoader.source.width < photoLoader.source.height)
{
trace("portrait");
}
else
{
trace("fail");
}
//draw loader background
loaderHolder.graphics.beginFill(0xffffff, 1);
loaderHolder.graphics.drawRect(0, 0, photoLoader.source.width + 20, photoLoader.source.height + 20);
loaderHolder.graphics.endFill();
loaderHolder.x = 230;
loaderHolder.y = 70;
this.addChild(loaderHolder);
}
请详细说明这个问题。我的缩略图加载很好,所有路径都是正确的。单击缩略图时出现的错误是
ReferenceError:错误#1069:在String上找不到属性名称,并且没有默认值。 在portfolio_fla :: MainTimeline / loadPics() 在MethodInfo-379()
所以我推断没有加载正确的文件,因为根本没有加载文件。我传递的参数和loadPic没有将其作为字符串读取的事实之间是否存在脱节?请帮忙!
哎呀几乎忘记了这是我对持有人的声明
var loaderHolder:Sprite = new Sprite();
var photoLoader:UILoader = new UILoader();
这是我加载电影时调试器输出的错误
尝试使用网址C启动并连接到播放器:\ Documents and Settings \ Brodie \ Desktop \ stephTsai \ portfolio.swf [SWF] C:\ Documents and Settings \ Brodie \ Desktop \ stephTsai \ portfolio.swf - 解压缩后426245个字节
这是我单击缩略图按钮时调试器输出的错误
画廊/大/ test1.jpg ReferenceError:错误#1069:在String上找不到属性宽度,并且没有默认值。 在portfolio_fla :: MainTimeline / loadPics()[portfolio_fla.MainTimeline :: frame1:45] 在Function / portfolio_fla:MainTimeline / loadThumbs / portfolio_fla:displayThumbs / portfolio_fla:onClick()[portfolio_fla.MainTimeline :: frame1:163]
第一部分'gallery / large / test1.jpg'是在loadThumbs()函数末尾追踪路径的程序......我很丢失,如果代码/方法很奇怪,我很抱歉没有永远触及动作。
(EDIT --------------------------------------------- --------------------) 我做了一些调查......
如果我将 - this.addChild(photoLoader)添加到代码中,而不是在我点击时将图片的非常小的版本加载到屏幕上。我还可以访问photoLoader项的高度和宽度。所以我猜这是搞砸了的是这部分:
if(photoLoader.source.width > photoLoader.source.height)
{
trace("landscape");
}
else if(photoLoader.source.width < photoLoader.source.height)
{
trace("portrait");
}
else
{
trace("fail");
}
和
loaderHolder.graphics.drawRect(0, 0, photoLoader.source.width + 20, photoLoader.source.height + 20);
该程序试图获取字符串的高度和宽度而不是图片。是否有一个我应该使用的不同的sytax或我应该采取的步骤,以便在执行其余功能之前正确加载图片?
答案 0 :(得分:0)
这更像是评论而不是答案,但我不能发表评论(不知道为什么)。无论如何,user985138是对的。例如: - onClick是CLICK事件的处理程序,但是你在哪里附加它 - function loadPics(pic):void - pic应该有一个类型
我建议您在Flash中单击Ctrl + Shift + F12,转到Flash选项卡,单击Script值的Settings ...按钮并勾选String和Warning模式。然后进行编译和调查。
答案 1 :(得分:0)
我无法看到代码中出现错误的位置。你在运行这些痕迹吗?你应该真的开始输入你的变量。例如,您将String
传递给函数loadPics:
loadPics(e.currentTarget.name);
然后您尝试访问String
的变量名称。这是没有意义的。
答案 2 :(得分:0)
photoLoader.source的类型为字符串。这是运行时抱怨的,当它试图获取源属性的宽度时。你需要使用的是photoLoader.width和photoLoader.height。
顺便说一句,我认为在资源(图片)实际加载之前,代码将无法获得正确的宽度和高度。因此,在检查photoLoader的高度和宽度之前,您可能需要等待Event.COMPLETE。