使用AS3调整XML库的大小

时间:2009-09-01 21:46:08

标签: flash actionscript-3 flash-cs4

我正在AS3开发一个项目用于商业目的和研究。

这次我正在开发一个带有XML和AS3的图片库,我对调整舞台大小并改变图片的x位置表示怀疑。

使用下面的代码,我可以调整图片大小,但我无法更改其x值。

有没有人能帮助我解决这个破碎的局面?

Thanx很多!

我正在使用的代码:

import flash.display.StageScaleMode;
import flash.display.StageAlign;

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;


var container_mc:MovieClip;

var my_images:XMLList;
var my_total:Number;

var my_thumb_width:Number;
var my_thumb_height:Number;

var x_counter:Number = 0;



var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("xml/snfashion_xml.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
var myXML:XML = new XML(e.target.data);

my_images = myXML.IMAGE;
my_total = my_images.length();

createContainer();
callThumbs();

myXMLLoader.removeEventListener(Event.COMPLETE, processXML);
myXMLLoader = null;
}

function createContainer():void {
container_mc = new MovieClip();
container_mc.x = 0;
container_mc.y = 0;
addChild(container_mc);
}

function callThumbs():void {
for (var i:Number = 0; i < my_total; i++) {

    var thumb_url = my_images[i].@THUMB;

    var thumb_loader = new Loader();
    thumb_loader.load(new URLRequest(thumb_url));
    thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);

    thumb_loader.name = i;

    thumb_loader.x = ((stage.stageHeight-80)*0.451428)*(x_counter);
    thumb_loader.y = 0;

    if (x_counter < my_total) {
        x_counter++;
    } 
}
}

function thumbLoaded(e:Event):void {
var my_thumb:Loader = Loader(e.target.loader);
container_mc.addChild(my_thumb);
my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE, thumbLoaded);

my_thumb.width = (stage.stageHeight-80)*0.4571428;
my_thumb.height = stage.stageHeight-80;




function thumbLoadedResize (e:Event):void
    {
        trace("STAGE HAS BEEN RESIZED");

        my_thumb.width = (stage.stageHeight-80)*0.4571428;
        my_thumb.height = stage.stageHeight-80;

    }

    stage.addEventListener(Event.RESIZE, thumbLoadedResize);

}

我尝试在thumb_loadermy_thumb调用阶段调整大小函数,但是在没有生成错误消息的情况下它没有用。

1 个答案:

答案 0 :(得分:0)

从表面上看,你可能会在某个地方遇到竞争状况。很难遵循代码,因为它是一种意大利面,但有一个明显的问题:你开始加载缩略图,然后才设置加载器的坐标。缩略图的COMPLETE事件很可能在安装之前或安装过程中被触发,这会使事情变得混乱。

以下是一些尝试:

  • 设置加载程序,包括在执行load()之前将其添加到容器中。
  • 除非使用匿名函数,否则不要在另一个函数中定义函数:

    为:

    function abc(){trace('abc'); } object.addEventLisenter(“event”,abc);

    好:

    object.addEventListener(“event”,function(){trace('abc');});

  • 从仅触发一次并且已经完成的事件中删除事件侦听器没有太大意义。取消变量也没有多大意义 - 垃圾收集器会处理它们,也不会处理它们,额外的行只是不需要的冗长。