Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 当这个Flash代码';缓存了什么?_Actionscript 3 - Fatal编程技术网

Actionscript 3 当这个Flash代码';缓存了什么?

Actionscript 3 当这个Flash代码';缓存了什么?,actionscript-3,Actionscript 3,我这里有一个flash文件,当flash播放时,它工作正常,但是在IE中,如果flash已经加载过一次,现在被缓存,它就会冻结。在互联网上深入挖掘后,我发现了以下几点: 这里面有很多已知的bug 闪9和闪10,其中一个是 事件发生问题。未完成 从主舞台发射时 嵌入缓存时从缓存加载 WMODE=“transparent”我不确定 这是你的问题,但值得 调查。我听说过一些 解决这个问题的方法。什么之中的一个 他们在,而不是在听 进展或完成所有事件,以及 只是使用一个定时循环,比如 输入_帧或计时器以

我这里有一个flash文件,当flash播放时,它工作正常,但是在IE中,如果flash已经加载过一次,现在被缓存,它就会冻结。在互联网上深入挖掘后,我发现了以下几点:

这里面有很多已知的bug 闪9和闪10,其中一个是 事件发生问题。未完成 从主舞台发射时 嵌入缓存时从缓存加载 WMODE=“transparent”我不确定 这是你的问题,但值得 调查。我听说过一些 解决这个问题的方法。什么之中的一个 他们在,而不是在听 进展或完成所有事件,以及 只是使用一个定时循环,比如 输入_帧或计时器以观看 字节加载/字节总数

我的WMODE是window,但这对我来说最有意义。loadText从未设置,这告诉我它没有进入swfProgressHandle函数。然而问题是,我只和其他人一起写了一半的flash(init中的所有内容),但是我再也联系不到其他人了。我对flash还比较陌生,所以我真的不知道如何让他的加载代码只运行计时器事件,而不是进程和完成事件(如上面引用的那样),这样当缓存时它就可以在IE中工作。有人能帮我吗?大部分代码都很好,这些进程和完整的处理程序只是用于加载导致问题的东西的开始

package 
{
    //---Imports---
    import flash.display.*;
    import fl.transitions.Tween;
    import fl.transitions.TweenEvent;
    import fl.transitions.easing.*;
    import flash.events.Event;
    import flash.events.*;
    import flash.events.IOErrorEvent;
    import flash.events.ProgressEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.utils.Timer;
    import flash.utils.*;
    import flash.text.Font;

    public class FohLoader extends Sprite
    {
        //create and start load bar
        private var loadBar:Sprite = new Sprite();
        private var loadText:TextField = new TextField();
        private var loadBarBg:Graphics = loadBar.graphics;

        //load XML data
        private var xmlLoader:URLLoader = new URLLoader();
        private var xmlData:XML = new XML();

        private var _queue:Array; //holds data objects of items to be loaded
        private var _index:int; //the current item in the _queue
        private var _images:Array; //holds DisplayObjects of the loaded images

        public function FohLoader()
        {
            _queue = new Array();
            _images = new Array();
            _index = 0;

            //waits for the stage to be created
            addEventListener(Event.ADDED_TO_STAGE, stageReadyHandle);
        }

        private function stageReadyHandle(e:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, stageReadyHandle);

            loadBarBg.lineStyle();
            loadBarBg.beginFill(0x5a96c5, 1);
            loadBarBg.drawRect(0, 0, 5, 10);
            loadBarBg.endFill();

            loadBar.x = (stage.stageWidth - 500)/2;
            loadBar.y = 30;
            loadBar.width = 5;
            loadBar.height = 10;
            this.addChild(loadBar);

            loadText.x = (stage.stageWidth - 0)/2;
            loadText.y = 50;
            this.addChild(loadText);

            //I have no idea if this crap works
            //but you would have to do something like this if you want to keep your project to one swf file.
            this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, swfProgressHandle);
        }

        private function swfProgressHandle(e:ProgressEvent):void 
        {
            //assumes you want the loadbar to be 500px at 100%
            var getPercent:Number = bytesLoaded / e.bytesTotal;
            trace(bytes_loaded + " of " + bytes_total + " loaded");
            loadBar.width = getPercent * 150; //changed 500 to 150
            loadText.text = String(Math.round(getPercent * 30) + "%"); //changed 100 to 30

            if (e.bytesLoaded / e.bytesTotal >= 1) 
            {
                e.target.removeEventListener(ProgressEvent.PROGRESS, swfProgressHandle);
                loadXml();
            }
        }

        private function loadXml()
        {
            xmlLoader.addEventListener(Event.COMPLETE, ParseXML);
            xmlLoader.load(new URLRequest("flash.xml"));
        }

        private function ParseXML(e:Event):void 
        {
            e.target.removeEventListener(Event.COMPLETE, ParseXML);
            flashInputs = new XML(e.target.data);

            //declare all XMl variables, terrible way to do it though
            var imageURLList:XMLList = flashInputs.image_area.image.image_url;
            var firmCount:XMLList = flashInputs.count_area.total_firms;
            var quoteMsg:XMLList = flashInputs.quote_area.quote.quote_text;
            var quoteOwner:XMLList = flashInputs.quote_area.quote.quote_owner;
            var imageURL:XMLList = flashInputs.image_area.image.image_url;
            var imageText:XMLList = flashInputs.image_area.image.image_text;

            var quoteMsg0:XML = quoteMsg[0];
            var quoteMsg1:XML = quoteMsg[1];
            var quoteMsg2:XML = quoteMsg[2];
            var quoteMsg3:XML = quoteMsg[3];
            var quoteMsg4:XML = quoteMsg[4];
            var quoteMsg5:XML = quoteMsg[5];
            var quoteMsg6:XML = quoteMsg[6];

            var quoteOwner0:XML = quoteOwner[0];
            var quoteOwner1:XML = quoteOwner[1];
            var quoteOwner2:XML = quoteOwner[2];
            var quoteOwner3:XML = quoteOwner[3];
            var quoteOwner4:XML = quoteOwner[4];
            var quoteOwner5:XML = quoteOwner[5];
            var quoteOwner6:XML = quoteOwner[6];

            var imageText0:XML = imageText[0];
            var imageText1:XML = imageText[1];
            var imageText2:XML = imageText[2];
            var imageText3:XML = imageText[3];
            var imageText4:XML = imageText[4];
            var imageText5:XML = imageText[5];
            var imageText6:XML = imageText[6];

            var imageURL0:XML = imageURL[0];
            var imageURL1:XML = imageURL[1];
            var imageURL2:XML = imageURL[2];
            var imageURL3:XML = imageURL[3];
            var imageURL4:XML = imageURL[4];
            var imageURL5:XML = imageURL[5];
            var imageURL6:XML = imageURL[6];

            //loops through the imageURL array and adds each item to the queue
            for each(var img:XML in imageURL)
            {
                addItem(String(img));
            }

            //loads the first item in the queue
            loadItem();
        }

        //creates a new loader for the item
        //adds a data object holding the item path and loader into the queue
        private function addItem(path:String):void
        {
            var loader:Loader = new Loader();
            _queue.push({loader:loader, path:path});
        }

        private function loadItem():void
        {
            _queue[_index].loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgCompleteHandle);
            _queue[_index].loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandle);
            _queue[_index].loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imgProgressHandle);
            _queue[_index].loader.load(new URLRequest(_queue[_index].path));
        }

        //checks the progress of each image, and increases the width of the load bar
        private function imgProgressHandle(e:ProgressEvent):void 
        {
            var perc:Number = e.bytesLoaded / e.bytesTotal;

            //this line assumes you are loading 6 images, and want the loadbar to end up at 500px
            //it also assumes the bar has already reached 30% (150px) from loading the swf
            loadBar.width = 150 + (_index * (350 / 6)) + ((350 / 6) * perc);
            //so the swf's 150 + (how many images have alrady loaded * the width each image needs to affect the bar) + 
            //(same thing * percent of current image loaded)
            //sounds right, might have to mess with that.
        }

        //this just stops flash from outputting an error if the image fails to load
        private function IOErrorHandle(e:IOErrorEvent):void 
        {
            e.target.removeEventListener(Event.COMPLETE, imgCompleteHandle);
            e.target.removeEventListener(IOErrorEvent.IO_ERROR, IOErrorHandle);
            trace("Error handled, sir.");
            trace("The problem was that, " + e);
        }

        private function imgCompleteHandle(e:Event):void 
        {
            e.target.removeEventListener(Event.COMPLETE, imgCompleteHandle);
            e.target.removeEventListener(ProgressEvent.PROGRESS, imgProgressHandle);
            e.target.removeEventListener(IOErrorEvent.IO_ERROR, IOErrorHandle);

            //adds the image to the _images array
            _images.push(e.target.content);

            //increments the load counter
            _index++;

            //checks to see if the queue is finished or not
            if (_index < _queue.length)
            {
                trade("Not done loading, loading another item");
                loadItem();
            }
            else
            {
                _index = 0;
                _queue = [];

                killLoadBar();
                init();
            }
        }

        private function killLoadBar()
        {
            this.removeChild(loadBar);
            this.removeChild(loadText);
        }
包
{
//---进口---
导入flash.display.*;
导入fl.transitions.Tween;
导入fl.transitions.TweenEvent;
导入fl.transitions.easing.*;
导入flash.events.Event;
导入flash.events.*;
导入flash.events.IOErrorEvent;
导入flash.events.ProgressEvent;
导入flash.net.urloader;
导入flash.net.URLRequest;
导入flash.text.TextField;
导入flash.utils.Timer;
导入flash.utils。*;
导入flash.text.Font;
公共类FohLoader扩展了Sprite
{
//创建并启动加载栏
private-var-loadBar:Sprite=new-Sprite();
私有变量loadText:TextField=newtextfield();
private var loadBarBg:Graphics=loadBar.Graphics;
//加载XML数据
私有变量xmlLoader:URLLoader=新的URLLoader();
私有变量xmlData:XML=newxml();
private var\u queue:Array;//保存要加载的项的数据对象
private var _index:int;//队列中的当前项
private var\u images:Array;//保存加载图像的DisplayObjects
公共函数FohLoader()
{
_队列=新数组();
_images=新数组();
_指数=0;
//等待创建阶段
addEventListener(Event.ADDED_至_阶段,stageReadyHandle);
}
私有函数stageReadyHandle(e:事件):无效
{
移除EventListener(Event.ADDED_至_STAGE,stageReadyHandle);
loadBarBg.lineStyle();
载荷倒钩(0x5a96c5,1);
loadBarBg.drawRect(0,0,5,10);
loadBarBg.endFill();
loadBar.x=(stage.stageWidth-500)/2;
载荷杆y=30;
加载条宽度=5;
载荷杆高度=10;
这个.addChild(加载条);
loadText.x=(stage.stageWidth-0)/2;
loadText.y=50;
this.addChild(loadText);
//我不知道这些废话是否管用
//但是如果你想把你的项目保存到一个swf文件中,你必须这样做。
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,swfProgressHandle);
}
私有函数swfProgressHandle(e:ProgressEvent):无效
{
//假设您希望加载条在100%时为500px
var getPercent:Number=bytesload/e.bytesTotal;
跟踪(已加载字节数+总字节数+已加载字节数);
loadBar.width=getPercent*150;//将500更改为150
loadText.text=String(Math.round(getPercent*30)+“%”;//将100更改为30
如果(e.bytesLoaded/e.ByTestTotal>=1)
{
e、 target.removeEventListener(ProgressEvent.PROGRESS,swfProgressHandle);
loadXml();
}
}
私有函数loadXml()
{
addEventListener(Event.COMPLETE,ParseXML);
load(新的URL请求(“flash.xml”);
}
私有函数ParseXML(e:Event):void
{
e、 removeEventListener(Event.COMPLETE,ParseXML);
flashInputs=新的XML(e.target.data);
//声明所有XMl变量,这是一种糟糕的方法
var imageURLList:XMLList=flashInputs.image\u area.image.image\u url;
var firmCount:XMLList=flashInputs.count\u area.total\u事务所;
var quoteMsg:XMLList=flashInputs.quote_area.quote.quote_text;
var quoteOwner:XMLList=flashInputs.quote_area.quote.quote_owner;
var-imageURL:XMLList=flashInputs.image\u area.image.image\u url;
var imageText:XMLList=flashInputs.image\u area.image.image\u text;
var quoteMsg0:XML=quoteMsg[0];
var quoteMsg1:XML=quoteMsg[1];
var quoteMsg2:XML=quoteMsg[2];
var quoteMsg3:XML=quoteMsg[3];
var quoteMsg4:XML=quoteMsg[4];
var quoteMsg5:XML=quoteMsg[5];
var quoteMsg6:XML=quoteMsg[6];
var quoteOwner0:XML=quoteOwner[0];
var quoteOwner1:XML=quoteOwner[1];
var quoteOwner2:XML=quoteOwner[2];
var quoteOwner3:XML=quoteOwner[3];
var quoteOwner4:XML=quoteOwner[4];
var quoteOwner5:XML=quoteOwner[5];
var quoteOwner6:XML=quoteOwner[6];
var-imageText0:XML=imageText[0];
var图像文本
<script type="text/javascript">

var flashvars = {};
var params = {};
var attributes = {};

swfobject.embedSWF("myContent.swf?rand="+Math.random(), "myContent", "300", "120", "9.0.0","expressInstall.swf", flashvars, params, attributes);

</script>