佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2143|回复: 7

AS3.0 Image Loader问题

[复制链接]
发表于 12-3-2009 04:29 PM | 显示全部楼层 |阅读模式
我想做一个Image Loader
有15个不同的button
当你click的时候,Loader会显示15张不同的照片
coding如下:
// Variables
var imageLoaderoader;

// Event listeners
a11_btn.addEventListener(MouseEvent.CLICK, loadImage("01.jpg");
b21_btn.addEventListener(MouseEvent.CLICK, loadImage("02.jpg");
// ....... 15 Similar buttons


// Functions
function loadImage(imageURL:String, e:MouseEvent):void
{
    imageLoader = new Loader();
    imageLoader.load(new URLRequest(imageURL));
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, displayImage);
}
function displayImage(e:Event)
{
    content_mc.imageHolder.addChild(imageLoader);
}


问题是在我define function时,我一定要有两个arguments --> e:MouseEvent, imageURL:String
但是在addEventListener里面,我只能放1个arguments, loadImage("01.jpg"
导致argument numberes mismatch
function 里面的 e:MouseEvent 不能撤除,不然的话它不respond to MouseEvent

有什么办法可以用同一个function loadImage() responding to MouseEvent.CLICK 来 load 15张不同的照片吗?
*google search一段时间了,没有头绪
谢谢

[ 本帖最后由 JohnChronox 于 12-3-2009 04:32 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 30-4-2009 09:37 PM | 显示全部楼层
使用 e:TargetMovie,

either Rename你的button 或者 rename 你的 image.

把你的 button 名为 b01 , 和ranme image 为 b01.jpg

var imageURL:String  = e:TargetMovie + ".jpg"

试试看...
回复

使用道具 举报

发表于 30-4-2009 09:40 PM | 显示全部楼层
使用 e:TargetMovie,

rename 你的button 为 b01 和rename 你的 image  为 b01.jpg

so b01 的 button load b01.jpg
你的imageURL:String = e:TargetMovie + ".jpg"

试试看
回复

使用道具 举报

 楼主| 发表于 1-5-2009 12:49 AM | 显示全部楼层
那么 function 就catch不到 addEventListener 里面的 MouseEvent.CLICK 了啊?
回复

使用道具 举报

发表于 1-5-2009 02:20 AM | 显示全部楼层
方法1 :
btn.addEventListener(MouseEvent.CLICK, function () { loadImage("01.jpg"); });

方法2 :
使用 looping 创建 Event Listener 和所对应的 Event Function



方法1较为实在和节省記憶體占用
回复

使用道具 举报

 楼主| 发表于 1-5-2009 01:35 PM | 显示全部楼层
谢谢super-tomato
我会慢慢研究addEventListener 的其他 optional arguments
回复

使用道具 举报

Follow Us
发表于 1-5-2009 02:44 PM | 显示全部楼层
原帖由 super-tomato 于 1-5-2009 02:20 AM 发表
方法1 :
btn.addEventListener(MouseEvent.CLICK, function () { loadImage("01.jpg"); });

方法2 :
使用 looping 创建 Event Listener 和所对应的 Event Function



方法1较为实在和节省記憶體占用


那如果要pass 2 各以上的var 到function

是不是可以
btn.addEventListener(MouseEvent.CLICK, function () { loadImage(var1, var2, var3, var4); });

function(var1:String,var2:String,var3:String,var4:String){
   trace(var1);
  trace(var2);
trace(var3);
trace(var4);
}

这样吗?
回复

使用道具 举报

发表于 1-5-2009 05:28 PM | 显示全部楼层
原帖由 JohnChronox 于 1-5-2009 12:49 AM 发表
那么 function 就catch不到 addEventListener 里面的 MouseEvent.CLICK 了啊?

  1. / Event listeners
  2. b01.addEventListener(MouseEvent.CLICK, loadImage);
  3. b02.addEventListener(MouseEvent.CLICK, loadImage();
  4. // ....... 15 Similar buttons


  5. // Functions
  6. function loadImage (e:MouseEvent):void
  7. {
  8.     imageLoader = new Loader();
  9. var imageURL:String = e.currentTarget + ".jpg";
  10. trace(imageURL);   
  11. imageLoader.load(new URLRequest(imageURL));
  12.     imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, displayImage);
  13. }
  14. function displayImage(e:Event)
  15. {
  16.     content_mc.imageHolder.addChild(imageLoader);
  17. }
复制代码


e.currentTarget 是 trigger Event 的 movieClip
回复

使用道具 举报


ADVERTISEMENT

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-12-2025 07:32 AM , Processed in 0.138609 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表