找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1808|回复: 0

[AS3] 再问 Loader 的自动居中问题

[复制链接]
发表于 2010-2-27 10:17:09 | 显示全部楼层 |阅读模式
RT,前段时间由于在找工作,所以很久没继续碰这东西了,上回被讨厌版主说道了一下(请相信,我绝对不怨恨,甚至很感激),仔细的研究了有关resize的用法。
我现在的代码效果是,当按键被触发,开始载入时,利用loader.contentLoaderInfo.width和loader.contentLoaderInfo.height来设置居中,这一点完美的实现了。
然后为了自适应分辨率,我在最后侦听了resize,根据分辨率与我场景的比例来缩小loader本身,再利用loader.width和loader.height来完成居中。这一点也完美的实现了。
现在的问题在于,当我分辨率发生改变时,loader已经成功居中,这个时候我再触发其他按键,导入进来的loader就不居中了,而是在左上对齐,并且输出面板提示错误
  1. TypeError: Error #1009: 无法访问空对象引用的属性或方法。
  2.         at script4/::rePosition()
复制代码

请斑竹再进来“骂”我一下,谢谢- -
或者各位达人有空的话,也可以指导下,谢谢。最后提前祝大家元宵快乐。。。!!
对了。。。忘记代码了。。。代码如下
  1. stop();
  2. stage.align = StageAlign.TOP_LEFT;
  3. stage.scaleMode = StageScaleMode.NO_SCALE;
  4. var logo:Loader = new Loader();
  5. var request:URLRequest = new URLRequest("companylogo.swf");
  6. logo.load(request);
  7. logo.contentLoaderInfo.addEventListener(Event.COMPLETE,wancheng);
  8. function wancheng(e:Event):void {
  9.         addEventListener(Event.ENTER_FRAME,jinru);
  10.         var n:Number = logo.contentLoaderInfo.height * 0.5;
  11.         function jinru(e:Event):void {
  12.                 logo.x = (stage.stageWidth - logo.contentLoaderInfo.width) * 0.5;
  13.                 about.x = logo.x + 100 ;
  14.                 news.x = about.x + 200;
  15.                 products.x = news.x +200;
  16.                 contact.x = products.x +200;
  17.                 about.y = news.y = products.y = contact.y = stage.stageHeight - 20;
  18.         }
  19.         addChild(logo);

  20.         var loader:Loader = new Loader();
  21.         var main:URLRequest = new URLRequest("about.swf");
  22.         //var main:URLRequest = new URLRequest("news.swf");
  23.         var main3:URLRequest = new URLRequest("products.swf");
  24.         var main4:URLRequest = new URLRequest("contact.swf");
  25.         about.addEventListener(MouseEvent.CLICK,aboutclick);
  26.         //news.addEventListener(MouseEvent.CLICK,newsclick);
  27.         products.addEventListener(MouseEvent.CLICK,productsclick);
  28.         contact.addEventListener(MouseEvent.CLICK,contactclick);
  29.         stage.addEventListener(Event.RESIZE,Resize);
  30.         function aboutclick(e:MouseEvent):void {
  31.                 loader.load(main);
  32.                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,kk);
  33.                 function kk(e:Event):void {
  34.                         loader.x = (stage.stageWidth - loader.contentLoaderInfo.width) * 0.5;
  35.                         loader.y = (stage.stageHeight - loader.contentLoaderInfo.height) * 0.5;
  36.                         addChild(loader);
  37.                         about.removeEventListener(MouseEvent.CLICK,aboutclick);
  38.                         //news.addEventListener(MouseEvent.CLICK,newsclick);
  39.                         products.addEventListener(MouseEvent.CLICK,productsclick);
  40.                         contact.addEventListener(MouseEvent.CLICK,contactclick);
  41.                 }
  42.         }
  43.         /*function newsclick(e:MouseEvent):void {loader.load(main);
  44.         loader.contentLoaderInfo.addEventListener(Event.COMPLETE,kk);
  45.         function kk(e:Event):void {
  46.         loader.x = (stage.stageWidth -loader.contentLoaderInfo.width) * 0.5;
  47.         loader.y = (stage.stageHeight + n - loader.contentLoaderInfo.height) * 0.5;
  48.         addChild(loader);
  49.         }
  50.         }*/
  51.         function productsclick(e:MouseEvent):void {
  52.                 loader.load(main3);
  53.                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,kk);
  54.                 function kk(e:Event):void {
  55.                         loader.x = 0;
  56.                         loader.y = (stage.stageHeight - loader.contentLoaderInfo.height) * 0.5 -n;
  57.                         addChild(loader);
  58.                         //news.addEventListener(MouseEvent.CLICK,newsclick);
  59.         products.removeEventListener(MouseEvent.CLICK,productsclick);
  60.         about.addEventListener(MouseEvent.CLICK,aboutclick);
  61.         contact.addEventListener(MouseEvent.CLICK,contactclick);
  62.                 }
  63.         }
  64.         function contactclick(e:MouseEvent):void {
  65.                 loader.load(main4);
  66.                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,kk);
  67.                 function kk(e:Event):void {
  68.                         loader.x = (stage.stageWidth - loader.contentLoaderInfo.width) * 0.5;
  69.                         loader.y = (stage.stageHeight - loader.contentLoaderInfo.height) * 0.5;
  70.                         addChild(loader);
  71.                         //news.addEventListener(MouseEvent.CLICK,newsclick);
  72.         products.addEventListener(MouseEvent.CLICK,productsclick);
  73.         about.addEventListener(MouseEvent.CLICK,aboutclick);
  74.         contact.removeEventListener(MouseEvent.CLICK,contactclick);
  75.                 }
  76.         }
  77.         function Resize(e:Event = null):void {
  78.                 loader.scaleX = loader.scaleY = 0.8;
  79.                 loader.x = (stage.stageWidth - loader.width) * 0.5;
  80.                 loader.y = (stage.stageHeight - loader.height) * 0.5;
  81.         }
  82.         products.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
  83. }
复制代码

[[i] 本帖最后由 tenzn 于 2010-2-27 13:41 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )

GMT+8, 2021-1-22 20:08 , Processed in 0.059581 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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