Actionscript 3 从设备与桌面Air应用程序通信
我一直在寻找一些关于如何做到这一点的例子,但我能找到的唯一信息并没有真正让我明白 我希望这里有人能提供一些见解 我目前有一个空气应用程序,我做了一段时间前。air应用程序在第3帧停止,我必须使用鼠标单击继续。我想做的是,当我在设备(手机/平板电脑)上加载的html页面上单击btn时,进入下一帧。Air应用程序本身将一直运行 我有一个服务器设置,所以我可以从我的设备(本地网络)访问html按钮 我还实现了它,以了解它如何与我的服务器交互。当我运行air应用程序时,我可以看到它调用服务器,并且air应用程序在调试器输出中打印来自服务器的一些结果。但事实上,这不是我想做的。它只是表明存在一些连接。但流程完全错了 所以我的问题是。有谁能告诉我一些关于如何从同一网络中的其他设备触发Air应用程序中的帧的详细信息吗?另一台设备不需要任何闪存。只要一个简单的html按钮就可以了Actionscript 3 从设备与桌面Air应用程序通信,actionscript-3,flash,air,Actionscript 3,Flash,Air,我一直在寻找一些关于如何做到这一点的例子,但我能找到的唯一信息并没有真正让我明白 我希望这里有人能提供一些见解 我目前有一个空气应用程序,我做了一段时间前。air应用程序在第3帧停止,我必须使用鼠标单击继续。我想做的是,当我在设备(手机/平板电脑)上加载的html页面上单击btn时,进入下一帧。Air应用程序本身将一直运行 我有一个服务器设置,所以我可以从我的设备(本地网络)访问html按钮 我还实现了它,以了解它如何与我的服务器交互。当我运行air应用程序时,我可以看到它调用服务器,并且air
谢谢我想说你们这里有两条可能的路线
http://myserver/nextslide.php
然后可以通过您选择的TCP端口连接到您的air应用程序。根据您的服务器和可用的脚本语言,这里有很多选项上述选项2的示例as3代码,使用带有FlashDevelop的空气投影仪进行测试:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.ServerSocketConnectEvent;
import flash.net.ServerSocket;
import flash.net.Socket;
import flash.utils.ByteArray;
public class Main extends Sprite
{
private var serverSocket:ServerSocket;
private var port:int = 8080;
public function Main():void
{
listen();
}
private function listen():void
{
try
{
serverSocket = new ServerSocket();
serverSocket.addEventListener(Event.CONNECT, socketConnectHandler);
serverSocket.bind(port);
serverSocket.listen();
trace("Listening on port " + port + "...\n");
}
catch (error:Error)
{
trace("Failed to open server socket");
}
}
private function socketConnectHandler(event:ServerSocketConnectEvent):void
{
var socket:Socket = event.socket;
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}
private function socketDataHandler(event:ProgressEvent):void
{
try
{
var socket:Socket = event.target as Socket;
var bytes:ByteArray = new ByteArray();
socket.readBytes(bytes);
var request:String = "" + bytes;
trace(request);
var url:String = request.substring(4, request.indexOf("HTTP/") - 1);
socket.writeUTFBytes("HTTP/1.1 200 OK\n");
socket.writeUTFBytes("Content-Type: text/plain\n\n");
if (url == "/next")
{
socket.writeUTFBytes("next frame triggered");
var someMovie:MovieClip = new MovieClip(); //define this as a reference to the movie clip you want to control
someMovie.nextFrame();
}
else
{
socket.writeUTFBytes("The url is " + url);
}
socket.flush();
socket.close();
}
catch (error:Error)
{
trace(error);
}
}
}
}
那么你能在你的AIR应用程序中收到消息吗?只需要更改帧的帮助吗?嗯,只有在我运行air应用程序的调试时,air应用程序才会点击服务器。这不是我真正需要的流量。但它确实证明了某种连接正在发生。需要做的是,air应用程序使用一个端口监听服务器上的连接,然后以某种方式从html页面触发所有这些。试图将它重构成我可以使用的东西是一个小把戏。此外,从mxml中提取AS并使其作为常规fla/.AS运行也是一项挑战。我发布了一些工作查询,希望有人能将代码重构成我所需要的——但每个人都很难理解它是如何完成的。