0

我正在做一个“简单”的 Flash 项目。. flash 元素有 2 个按钮,每个按钮都有文本和更改图像。要显示的文本和图像是从 XML 文件中读取的。该项目将用作不同位置的信息亭的默认页面。我将通过 flashVars 将信息亭位置传递给 SWF 文件。这将使信息亭能够提取特定位置的文本和图像。我不是 Flash 开发人员,但因为没有其他人想要它或对 AS3 一无所知,所以得到了这个项目。我在我用来编写这个项目的 stackOverflow 和 google 上找到了很多很好的例子。

我的问题是,当您将鼠标悬停在按钮上时,旋转中的图像会变成空白。

最初,两个按钮都来自 XML 文件的动态,并且两个按钮都在消隐图像。在故障排除中,我对左侧按钮进行了硬编码,图像不再空白。我不确定是时间轴中的错误还是 as3 代码中的错误。当它实际上是读取动态 xml 文件以显示要开始的图像时,硬编码 xml 文件位置“修复”问题的事实对我来说没有意义。

我已将此项目放在我的个人网站上,因此任何想要帮助的人都可以查看和访问这些文件。

查看: http: //minerb.com/kiosk/as3.cfm

双方硬编码到 xml 文件的路径,它可以工作: http: //minerb.com/kiosk/as4.cfm

访问文件: http: //minerb.com/kiosk/index.cfm

来自工作硬编码的 xml 文件位置的代码片段(Option1SlideShow 第 21-30 行):

var d = new Date();
var n = d.getMinutes();





my_xml_loader.load(new URLRequest("assets/default/content.xml?"+n));

来自非工作动态 xml 文件位置的代码片段(动态幻灯片第 21-30 行)::

var d = new Date();
var n = d.getMinutes();
// start dynamic content.xml 
var option2Loc:String;
option2Loc = loaderInfo.parameters.option2Loc+"content.xml?"+n;
// end dynamic content.xml

my_xml_loader.load(new URLRequest(option2Loc));

从 XML 文件加载图像的整个 AS3 代码

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

var my_speed:Number;
var my_total:Number;
var my_images:XMLList;

var my_loaders_array:Array = [];
var my_success_counter:Number = 0;
var my_playback_counter:Number = 0;

var my_slideshow:Sprite = new Sprite();
var my_image_slides:Sprite = new Sprite(); 

var my_timer:Timer;
var my_prev_tween:Tween; 

var my_xml_loader:URLLoader = new URLLoader();

//start test bits
var d = new Date();
var n = d.getMinutes();
// start dynamic content.xml 
    var option2Loc:String;
    option2Loc = loaderInfo.parameters.option2Loc+"content.xml?"+n;
// end dynamic content.xml

   my_xml_loader.load(new URLRequest(option2Loc));
//end test bits

my_xml_loader.addEventListener(Event.COMPLETE, processXML);





function processXML (e:Event):void{
    var my_xml:XML = new XML(e.target.data); 
    my_speed=my_xml.button.images.@SPEED;
    my_images=my_xml.button.images.IMAGE;
    my_total=my_images.length();    

    loadImages();
}

function loadImages():void{
    for (var i:Number = 0; i < my_total; i++){
        var my_url:String = my_images[i].@URL;
        var my_loader:Loader = new Loader();
        my_loader.load(new URLRequest(my_url));
        my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
        my_loaders_array.push(my_loader); 
    }
}

function onComplete(e:Event):void{
    my_success_counter++;
    if (my_success_counter == my_total){
        startShow();
    }

}      

function startShow():void{
    addChild(my_slideshow);
    my_slideshow.addChild(my_image_slides);

    setChildIndex(my_slideshow,0);

nextImage();

    my_timer = new Timer(my_speed*1000);
    my_timer.addEventListener(TimerEvent.TIMER, timerListener);
    my_timer.start();


}

function nextImage():void{
    var my_image:Loader = Loader(my_loaders_array[my_playback_counter]);
    my_image_slides.addChild(my_image);
    //my_image.x = (stage.stageWidth - my_image.width)/2;
    //my_image.y = (stage.stageHeight - my_image.height)/2;


    if (my_image.width == my_image.height) {
        my_image.width = 305;
        my_image.height = 305;
    }   else if( my_image.width > my_image.height ) {
            var newWidth = (my_image.width *(305 / my_image.height));
            my_image.height = 305;  
            my_image.width = newWidth;
    }   else if( my_image.width < my_image.height ) {
            var newHeight = (my_image.height *(305 / my_image.width));
            my_image.width = 305;   
            my_image.height = newHeight;

    }

    my_image.x = 80;
    my_image.y = -140;


    new Tween(my_image,"alpha",Strong.easeOut,0,1,1,true); 



}     

function timerListener (e:TimerEvent):void{
    hidePrev();

    my_playback_counter++;
    if (my_playback_counter == my_total){
        my_playback_counter =0;
    }

nextImage();

} 

function hidePrev():void{
var my_image:Loader=Loader(my_image_slides.getChildAt(0));
my_prev_tween = new Tween(my_image,"alpha",Strong.easeOut,1,0,1,true);
my_prev_tween.addEventListener(TweenEvent.MOTION_FINISH, onFadeOut)

new Tween(my_image,"alpha",Strong.easeOut,1,0,1,true);

} 

function onFadeOut(e:TweenEvent):void{
my_image_slides.removeChildAt(0);

}

结束加载图像的 AS3 代码

** 用于从 XMl 文件加载动态文本的整个 AS3 代码 **

import flash.net.URLRequest;
// start dynamic content.xml 

var option2Loc:String;
option2Loc = loaderInfo.parameters.option2Loc;

// end dynamic content.xml
var xmlData:XML = new XML();
var d = new Date();
var n = d.getMinutes();

var theURL_ur:URLRequest = new URLRequest(option2Loc+"content.xml?"+n);
var loader_ul:URLLoader = new URLLoader(theURL_ur);
loader_ul.addEventListener("complete", fileLoaded);

function fileLoaded(e:Event):void
{
xmlData = XML(loader_ul.data);
option2Text.text = xmlData.button.text;

}

** 加载文本的结束代码 **

4

0 回答 0