免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享

版主,快看看我遇到的关于加载图片后无法读取宽度的问题

本文来自:★flash之路-flash技术交流★ 转帖请注明出处! 作者:肤浅 您是第4723个浏览者

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
flashroad友情提示:
“点评”不是“回帖”!
想问一下用xml加载图片(Bitmap)给一个容器(Sprite)后,再想读取容器的width是0,height也是0,我想读取容器的宽度怎么弄啊,可是当加载这个容器返回对象后读取不出这个容器的宽度,请问有什么方法吗?下面是我的代码:
  1. function loading(_url: String, _txt: String): MovieClip {
  2. var container: MovieClip = new MovieClip();

  3. var loader: Loader = new Loader();
  4. var url: URLRequest = new URLRequest(_url);
  5. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onload);
  6. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,error);
  7. loader.load(url);


  8. function error(e:IOErrorEvent):void{
  9. trace(e);
  10. }

  11. function onload(evt: Event): void {

  12. var image: Bitmap = Bitmap(loader.content);
  13. var w:Number=image.width;
  14. var h:Number=image.height;
  15. if(w/h<1){
  16. image.height=image_MaxHeight;
  17. image.width=w/h*image.height;
  18. }else{
  19. image.width=image_MaxWidth;
  20. image.height=h/w*image.width;
  21. }
  22. image.x=-image.width/2;
  23. image.y=-image.height/2;
  24. container.addChild(image);

  25. container["bg_width"]==image.width;//动态添加每一个容器的宽度,依然没有用?
  26. //trace(container.width);

  27. }
  28. return container;
  29. }
复制
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

友情提示:单击下列任意一个表情,即可瞬间自动回复本帖!

好贴......
郁闷......
开心......
擦汗......
鄙视......
狂怒
谢谢
爱你呦
拜托了
嗯嗯
OMG
求关注
伤心......
无奈.....
无奈.....
无奈.....
无奈.....
无奈.....
哈哈哈
NO
OK
what
我来了

最近访问本帖者列表:

flashroad
访问时间:2020-05-25 08:23

点评

flashroad

找到原因了:20到26行 你给image的宽高赋值了。导致都为0了。试着将29行放到20行之前 发表于 2016-8-16 19:47

flashroad

看5楼内的链接,告诉了我们,如果给宽高赋值,就会自动变成0   必须将赋值语句去掉才不为0 发表于 2016-8-16 19:48

点评
B Color Smilies

您还可以输入:个字符
X

X

简单就好

帮你将帖子稍微修改了一下
主要是全局加粗挺难受
然后 代码部分放入“代码”内 方便阅读
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

我依稀记得 被加载进来的对象 无法直接操作 宽高
取而代之的是使用 横纵缩放比 scaleX
没法获得宽高值
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

回复 3# flashroad


   那我就不能在其他地方用这个container的宽度了啊,哎,头疼
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

简单就好

TOP

加载外部资源这块内容 我并不熟悉
只记得,被加载的对象如果是swf格式,无法操作宽高,只能用缩放比。其它类型的我就不清楚了。
搜到这么一篇文章,不知道有没有用:
http://www.cnblogs.com/yjmyzz/archive/2010/07/17/1779918.html


另外,不晓得你将图片放在影片剪辑内的目的是干啥?如果单纯的显示图片,不用将图片放入容器内。即使要放入容器内,也可以用最轻量级shape【仅显示】 或轻量级 的sprite【没有时间轴的mc】而不是用movieclip
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

另外,我记得,要显示图片,需要bitmap和bitmapdate两个类共同协作
但你的代码中好像只有一个bitmap类,少了bitmapdate

你那里能显示出图片么?

【我对于图片处理也没有学多少,汗一个】
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

看了一下本书:http://flashroad.joinbbs.net/viewthread.php?tid=45
在其8.4.载入外部图片到位图上 找到了解决办法,下面是我写的一段代码:
  1. var ld:Loader=new Loader()
  2. ld.contentLoaderInfo.addEventListener(Event.COMPLETE,wancheng)
  3. ld.load(new URLRequest("E:/pic/png/01.png"))
  4. function wancheng(e:Event){
  5.         
  6.         var image:Bitmap=Bitmap(ld.content)
  7.         var bitmap:BitmapData=image.bitmapData
  8.         
  9.         addChild(image)
  10.         trace(image.width)//可以正常输出具体数值
  11. }
复制
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

点评

flashroad

第07行去掉 不影响效果 囧。 看来bitmapdata是直接loader进来的,仅需bitmap即可 发表于 2016-8-16 19:43

点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

回复 2# flashroad


   好的,就来改
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

简单就好

TOP

回复 5# flashroad


   我是要把一系列图片加到舞台上,按顺序放置,间隔20px,因为不知道它们的宽度所以不能顺利添加对象
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

简单就好

TOP

回复 6# flashroad


   能够显示图片的,我这个是在书上看到的
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

简单就好

TOP

回复 7# flashroad


   关键是现在因为加载需要时间,我用timer用隔一段时间再把这个容器(含图片的东西加载进去),就能够获得它的宽度了,只是这个太低效了,不晓得有没有更好的方法
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

简单就好

TOP

 

B Color Image Link Quote Code Smilies
高级模式 | 发新话题

您需要登录后才可以回帖 登录|立即注册

快速
返回顶部
返回首页