AS3 - LocalConnection似乎不起作用

时间:2016-09-15 15:17:48

标签: actionscript-3 flash flash-cs5.5 localconnection

我尝试使用LocalConnection在三个swfs之间建立通信,这三个swfs加载到单独的broswer窗口(全部由最初打开的页面打开)。我是瑞士法庭之间的沟通新手,我将按照here找到的教程进行操作。

我是从xampp服务器运行这些进行测试的。

基本上,我有3个swfs。我有一个主人'瑞士法郎和两个奴隶'主权财富基金。当主swf启动时,它会在新窗口中打开其他swfs。当在主服务器中单击按钮时,我试图仅更新其中一个从服务器中的某些文本。稍后会发生更复杂的事情,我只是想先找出LocalConnections。

' master.swf'中的代码(在时间轴上):

import flash.net.URLRequest;
import flash.events.Event;

//Used as a flag to open each slave window, one of the first frame, one on the second frame, as using navigateToURL twice in a row doesn't seem to work.
var frameCount = 0;

//This is what I'm attempting to send over the LocalConnection.
var messageText = "it worked!";

var slave1url:URLRequest = new URLRequest("slave1.html");
var slave2url:URLRequest = new URLRequest("slave2.html");

//Creates a one-way connection to communicate with JUST slave1
var slave1OutboundConnection:LocalConnection = new LocalConnection();

this.addEventListener(Event.ENTER_FRAME, Update);

slave1Button.addEventListener(MouseEvent.CLICK, SendMessageToSlave1);
slave1Button.buttonMode = true;

//Send a message to slave1 via the slave1OutboundConnection
function SendMessageToSlave1(e:Event){  
    slave1OutboundConnection.send("masterToSlave1Connection", "UpdateTextFromCommunication", messageText);  
}

function Update(e:Event){

    //Open the slave1 page on the first frame, and the slave2 page on the second frame.
    if(frameCount == 0){
        navigateToURL(slave1url, "_blank");
        frameCount++;
    } else if (frameCount == 1){
        navigateToURL(slave2url, "_blank"); 
        frameCount++;
    }   

}

在slave1中:

var masterInboundConnection:LocalConnection = new LocalConnection();

masterInboundConnection.allowDomain("*");

masterInboundConnection.connect("masterToSlave1Connection");

function UpdateTextFromCommunication(receivedArguments){
   displayText.text = receivedArguments;
}

我在每个html页面中都有一些自定义javascript来设置页面大小和位置,但我认为这不重要:

<script>
        //Get the width of the user's monitor
        var resolutionWidth = window.screen.availWidth;

        //Get the height of the user's monitor (minus the height of the task bar)
        var resolutionHeight = window.screen.availHeight;   

        //First screen is 0, second is 1, third is 2, etc.
        var screenNumber = 2;

        //If this screen is not displayed on the primary monitor, add 40 pixels for the lack of the taskbar on other monitors
        if(screenNumber > 0){
            resolutionHeight += 40;
        }

        //Maximize the window
        this.resizeTo(resolutionWidth, resolutionHeight);

        //Move the window to the appropriate display
        this.moveTo(resolutionWidth * screenNumber, 0);         
    </script>

当我点击应该触发通讯的按钮时,似乎没有任何事情发生。

我在Windows 7上的localhost xampp服务器上运行IE11中包含这些swfs的html页面。在CS5.5中制作Swfs。

1 个答案:

答案 0 :(得分:0)

在每个入站连接中,我都缺少一行代码:

masterInboundConnection.client = this;

现在一切都按预期工作了。