Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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 URL请求多个SWF链接无法正常工作_Actionscript 3_Apache Flex_Flash - Fatal编程技术网

Actionscript 3 URL请求多个SWF链接无法正常工作

Actionscript 3 URL请求多个SWF链接无法正常工作,actionscript-3,apache-flex,flash,Actionscript 3,Apache Flex,Flash,我试着在3个不同的容器中装载3个不同的股票。 删除此行时: loader2.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&c

我试着在3个不同的容器中装载3个不同的股票。 删除此行时:

 loader2.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
 loader3.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
并分别加载它们,它们工作正常:

但当我把它们放在一起时,就像adobe中写的那样,所有三个代码都显示相同的数字:

package  {    
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.display.Loader;


public class importExternalSWF extends MovieClip {
    private var loader:Loader = new Loader();
    private var loader2:Loader = new Loader();
    private var loader3:Loader = new Loader();

    public function importExternalSWF() {
        loader.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=mrj-4&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
        loader2.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
        loader3.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=grel&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));

        ticker1.addChild(loader);
        ticker1.width=50;
        ticker1.height=20;

        ticker2.addChild(loader2);
        ticker2.width=50;
        ticker2.height=20;

        ticker3.addChild(loader3);
        ticker3.width=50;
        ticker3.height=20;      
        }
    }
}

我哪儿也找不到解决办法

谢谢

编辑 我把代码重写成这样,结果还是一样的

public class importExternalSWF extends MovieClip {

    public function importExternalSWF() {

        var url = "http://tickers.playtech.com/jackpots/new_jackpot.swf";
        var urlParams:Array = ["grel", "bl", "game=mrj-4"];
        var tickers:Array = [ticker1, ticker2, ticker3];
        var tickerHeight:Number = 50;
        var tickerWidth:Number = 50;

        loadUrls();

        function loadUrls():void {

            for(var i:uint = 0; i<urlParams.length; i++)
            {
                var urlLoader = new Loader();
                var flashvars:URLVariables = new URLVariables();
                flashvars["casino"] = "cityclub";
                flashvars["info"] = "1";
                flashvars["game"] = urlParams[i];
                flashvars["currency"] = "eur";
                flashvars["font_face"] = "arial";
                flashvars["bold"] = "true";
                flashvars["font_size"] = "10";
                flashvars["bg_color"] = "0x000000";
                flashvars["font_color"] = "ffffff";

                var request:URLRequest = new URLRequest(url);
                request.data = flashvars;
                urlLoader.load(request);

                tickers[i].width=tickerWidth;
                tickers[i].height=tickerHeight;
                tickers[i].addChild(urlLoader);
            }
        }
    }
public类importExternalSWF扩展了MovieClip{
公共函数importExternalSWF(){
变量url=”http://tickers.playtech.com/jackpots/new_jackpot.swf";
var urlParams:Array=[“grel”,“bl”,“game=mrj-4”];
var tickers:Array=[ticker1,ticker2,ticker3];
var tickerHeight:编号=50;
var tickerWidth:Number=50;
loadURL();
函数loadUrls():void{

对于(var i:uint=0;i我怀疑外部SWF文件在根级别设置了一些变量。因此,每次加载都将覆盖以前的值,并且最终在所有“ticker”中得到相同的分数

通过将每个SWF加载到其自己的
应用程序域
,很可能可以解决此干扰。默认情况下,SWF加载到同一个应用程序域并共享其代码

因此,与其这样做,不如:

urlLoader.load(request);
你应该这样做:

// create a new LoaderContext with a spearate ApplicationDomain
var context:LoaderContext = new LoaderContext(false, new ApplicationDomain());

// load the request and use the context with the separate ApplicationDomain
urlLoader.load(request, context);

我有个坏消息,我尝试了所有方法,但是我无法正确加载swf文件。因此,我开始研究这个问题,我发现,首先,您的swf具有AVM1Movie格式(new_jackpot.swf),因此,我得出结论,这个swf是使用ActionScript的1或2版创建的。如果您看到AVM1Movie类的参考(这里是,说:

由AVM2 SWF文件加载的AVM1 SWF文件有几个限制:

  • 由AVM2 SWF文件加载的AVM1 SWF文件无法将另一个SWF文件加载到此文件中。也就是说,它无法在自身上加载另一个SWF文件。但是,由此SWF文件加载的子精灵对象、MovieClip对象或其他AVM1 SWF文件可以加载到此文件中。
然后,我也尝试使用一个在Flex中实现线程的库,发现了以下内容(这里是链接):

  • Flash Player中的Actionscript虚拟机(AVM)由于只有一个线程而受到严重限制…
我已经使用Loader、SWFLoader、ByteArray等创建了几个项目,所有这些都是在Flex SDK 3.2的actionscript 3中完成的。 如果您在以前的版本中创建此项目,或者尝试使用实现线程的同一个库,则可能会成功


无论如何,如果我找到了更多内容,我将使用另一个正确的解决方案编辑此答案。

尝试在以下位置的«laoder»后添加1:

private var loader:Loader = new Loader();


由于提供股票报价器的第三方公司缺乏兼容性,因此无法解决此问题。

参数“para”对SWF有影响吗?我认为您不能直接将参数传递给SWF。为什么要传递参数“para”两次?SWF必须有参数才能正常工作。正如您在im中看到的年龄,它的工作,但只有单独的。当它在一起,最后一个链接覆盖以前的URL加载。其余的代码看起来如何?你如何处理加载完成?除了单击侦听器,这是我得到的所有。在看了很多教程后,没有注意到任何关于完成处理程序的说明,如果我是其中之一,请(我:)您是否尝试使用Charles并查看是否实际发送了3个请求?您是否比较了loaderInfo
?这就是我的想法,我将在明天早上尝试并更新。非常感谢。由于某些原因,它不起作用,结果是相同的,但它必须是一个方向良好的信息。对于asker来说,实现这样的请求似乎更简单自动售票机/柜台。谢谢你提供的信息。我会尝试这些建议。@bummzack我曾想过这样做,但“自动售票机”是由第三方公司提供的,我们无法访问他们的数据。你可以看到我几天前写的编辑,我当时重写了代码
loader.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=mrj-4&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));