18.2.发送数据

问题
我想在几个flash之间传送数据
解决办法
通过send( )方法的第三个参数传递数据
讨论
send( )方法的第三个参数即传递的数据,前两个参数是必须的:通道名称,接收端方法名称。

需要注意的是这个方法名称不能和LocalConnection类内部的属性和方法名称冲突,否则send( )将调用失败,send, connect, close, allowDomain, allowInsecureDomain, client, and domain.这些名称不能作为参数使用。

在接收端应创建一个接收方法来接收发送过来的数据,下面的例子中,接收端创建example( ).作为接收函数:
+展开
-ActionScript
package {
import flash.net.LocalConnection;
public class ExampleReceiver {
private var _receiver:LocalConnection;
public function ExampleReceiver( ) {
// 实例化接收端本地连接,监听"_exampleChannel"通道
_receiver = new LocalConnection( );
_receiver.connect( "_exampleChannel" );
_receiver.client = this;
}
public function example( str:String, num:Number, bool:Boolean):void {
trace( "The parameters are: " + str + "\n" + num + "\n" + bool );
}
}
}
发送端的代码如下:
// 发送三个参数给接收端
var sender:LocalConnection = new LocalConnection( );
sender.send( "_exampleChannel""example""a string", 6.5, true);

发送数据的数据类型不限于基本数据类型,还可以是复合类型:Object, Array, Date, TextFormat,和XML.

另外也可以是自定义数据类型,发送和读取自定义类对象的方式和LSO的方式差不多,更多细节请看第17.6章, 基本步骤如下:
1.
定义自定义类,在发送和接收Flash中引入
2.
使用flash.net.registerClass( )注册自定义类对象,注意在所有的flash中要用相同的名称别名
3.
通过本地连接的Send a class instance over a local connection with the send( ) method.

下面的例子演示如何传递自定义类对象,首先定义自定义类Person:
+展开
-ActionScript
package model {
public class Person {
private var _firstName:String;
private var _age:int;
public function Person(firstName:String, age:int) {
_firstName = firstName;
_age = age;
}
public function toString( ):String {
return _firstName + " is " + _age + " years old";
}
}
}

接收端代码:
+展开
-ActionScript
import flash.net.registerClassAlias;
import model.Person;
registerClassAlias( "model.Person", model.Person );
package {
import flash.net.LocalConnection;
public class ExampleReceiver {
private var _localConnection:LocalConnection;
public function ExampleReceiver( ) {
_localConnection = new LocalConnection( );
_localConnection.connect("_exampleChannel");
_localConnection.client = this;
}
public function example( person:Person ):void {
trace( person.toString( ) );
}
}
}

发送端代码:
+展开
-ActionScript
package {
import flash.net.registerClassAlias;
import model.Person;
public class ExampleSender {
public function ExampleSender( ) {
registerClassAlias( "model.Person", Person );
// Create a Person instance to send across
var person:Person = new Person("Darron", 24);
// Create the local connection and send a Person instance
// to the receiving movie.
var sender:LocalConnection = new LocalConnection( );
sender.send( "_exampleChannel""example", person );
}
}
}

加支付宝好友偷能量挖...


评论(0)网络
阅读(86)喜欢(0)flash/flex/fcs/AIR