在使用LocalConnection的时候,出现Error #2044: 未处理的 StatusEvent:。 level=error, code=这样的报错
以前是直接写在时间轴里的,没有报错。
这次是写在文档类。可是怎么搞都报错
例如.test1.swf加载了test2.swf,需要将test1的参数传到test2
1.加载test2.swf,然后在test2.swf建立一个连接,通知test1.swf已经建立完成(回调test1的t1Function()函数)
2.test1.swf收到test2.swf的回调之后也建立一个连接,并把参数发给test2.swf(回调test2r的t2Function(obj:Object)函数)
为了不重复写两次连接,所以写在一个as文件里
ConnectionObject.as
package com.zkl.net
{
import flash.events.StatusEvent;
import flash.net.LocalConnection;
/**
* 建立一个连接名,然后发送一个连接信息
* @author zkl
* 2010-8-3 10:57
*/
public class ConnectionObject
{
//回调对像
private var _client:Object;
//实例化连接
private var _conn:LocalConnection;
//准备一个 LocalConnection 对象,以接收来自 send() 命令(称为发送方 LocalConnection 对象)的命令。
private var _connName:String;
//接收的对像
private var _connObj:String;
//接收的句柄
private var _connHandler:String;
//接收的参数
private var _connVar:Object;
/**
* 使用当前的连接对像,建立一个连接名,然后发送一个连接信息
* @param _client:当前服务对像
* @param _connName:连接名
* @param _connObj:要连接的对像
* @param _connHandler:连接的句柄
* @param _connVar:附带的参数
*/
public function ConnectionObject(_client:Object, _connName:String, _connObj:String, _connHandler:String, _connVar:Object = null):void
{
this._client = _client;
this._connName = _connName;
this._connObj = _connObj;
this._connHandler = _connHandler;
this._connVar = _connVar;
init();
}
/**
* 建立连接
*/
private function init():void
{
_conn = new LocalConnection;
_conn.client = _client;
_conn.allowDomain("*");
try {
_conn.connect(_connName);
}catch (err:ArgumentError) {
trace(err);
}
}
/**
* 开始连接
*/
public function isConnection():void
{
if (_connVar == null) {
_conn.send(_connObj, _connHandler);
}else {
_conn.send(_connObj, _connHandler, _connVar);
}
_conn.addEventListener(StatusEvent.STATUS, onStatus);
}
/**
* 关闭连接
*/
public function connClose():void
{
_conn.close();
_conn = null;
}
/**
* 连接状态
* @param e
*/
public function onStatus(e:StatusEvent):void {
//_conn.removeEventListener(StatusEvent.STATUS, onStatus);
switch(e.level) {
case "status":
trace(_client + "发送成功.");
break;
case "error":
trace(_client + "发送失败!");
break;
}
}
}
}
这是test1.swf的文档类
package
{
import com.zkl.net.ConnectionObject;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
/**
* ...
* @author zkl
*/
public class Test1 extends MovieClip
{
private var co:ConnectionObject;
public function Test1() {
var loader:Loader = new Loader();
var movieUrl:URLRequest = new URLRequest("test2.swf");
loader.load(movieUrl);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
connObject();//------------------------------1
}
public function loadComplete(e:Event):void {
addChild(e.target.content);
//connObject();//-----------------------2
}
public function connObject():void {
co = new ConnectionObject(this, "t2", "t1", "t2Function", { totalUnit:10 } );
}
public function t1Function():void {
co.isConnection();
co.connClose();
}
}
}
//注意1和2不能调换,如果调换了就会出现前面那的错,主要是因为test2.swf还没加载完成之前,test1.swf要先做连接准备,不然test2.swf就会回调不到test1.swf的函数
这是test2.swf的文档类
package
{
import com.zkl.net.ConnectionObject;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLRequest;
/**
* ...
* @author zkl
*/
public class Test2 extends MovieClip
{
private var co:ConnectionObject;
public function Test2() {
co = new ConnectionObject(this, "t1", "t2", "t1Function");
co.isConnection();
}
public function t2Function(obj:Object):void {
co.connClose();
trace(obj.totalUnit);
}
}
}
请注意上红色的那段
分享到:
相关推荐
AS3是Adobe Flash Professional和Flex Builder等开发工具中广泛使用的编程语言,它允许我们创建丰富的交互式内容,包括音频处理。 ### AS3录音功能 在AS3中,我们可以使用`Microphone`类来访问用户的麦克风设备,...
} catch (error:ArgumentError) { ExternalInterface.call("sendToJavaScriptXiaXian_out"); } } ``` 通过以上步骤,我们不仅可以实现消息通讯的功能,还可以有效地管理账号的登录状态,确保了系统的安全性和...
6. **错误处理**:在整个过程中,别忘了添加适当的错误处理机制,例如监听`ErrorEvent`,以便在出现问题时给出反馈。 ```as3 fileRef.addEventListener(Event.CANCEL, onCancel); fileRef.addEventListener...
Flex声音录入技术主要涉及到Flash平台中的MicRecorder和Microphone组件,这两个组件是处理音频输入和输出的核心工具。在本文中,我们将深入探讨如何利用这些组件实现麦克风声音的录入、播放以及时间统计,并讨论如何...
为了监控本地连接的状态,包括可能发生的异常和连接状态变化,应为LocalConnection对象添加相应的事件侦听器,如`StatusEvent.STATUS`和`AsyncErrorEvent.ASYNC_ERROR`,并在这些事件发生时执行相应的处理逻辑。...
trace("Camera status: " + event.code); } ``` 七、安全性与隐私 尊重用户的隐私权,当不再需要摄像头时,应释放资源并停止视频流: ```actionscript videoDisplay.attachCamera(null); camera = null; ``` 综...
在开始编写代码之前,我们需要了解ActionScript 3.0中的声音处理基础。AS3.0引入了Sound类和Microphone类,这两个类是实现录音功能的关键。Sound类用于播放和操作音频数据,而Microphone类则用于访问用户的麦克风...
if (event.code == "Camera.Unmuted") { trace("Camera is now active."); } } ``` 此外,Flash还支持对摄像头参数的调整,比如亮度、对比度、质量等,以满足不同场景的需求。例如,我们可以这样改变摄像头的...
AS3是Adobe Flash Player和Adobe AIR应用程序的主要编程语言,它提供了丰富的功能来处理多媒体,包括声音处理。 首先,让我们了解AS3中的声音类。在AS3中,`Sound`和`Microphone`类是实现录音功能的关键。`...
首先,AS3中的录音涉及到的声音处理主要是通过`Microphone`类来完成的。`Microphone`是Flash Player提供的一个内置类,用于获取用户的麦克风输入。以下是一些关键步骤: 1. **请求访问麦克风**:在使用`Microphone`...
if (event.code == "Microphone.Unmuted") { // 开始录音 } } ``` 3. **开始录音**:调用`start()`方法开始录音,用户同意权限后,麦克风数据会被捕获。 ```actionscript mic.setSilenceLevel(0, 1); mic.rate = ...
// 闪光灯不可用或未开启 } ``` 2. 接下来,可以设置闪光灯的状态: ```actionscript camera.setFlashMode(FlashMode.AUTO); // 自动模式 camera.setFlashMode(FlashMode.ON); // 开启闪光灯 camera.setFlashMode...
在本文中,我们将深入探讨如何使用...总的来说,AS3提供了一套强大的工具来处理摄像头和视频流,使得开发者能够构建丰富的多媒体应用程序。理解并掌握这些概念和技术对于创建引人入胜的Web交互体验至关重要。
conn.addEventListener(StatusEvent.STATUS, onStatus); ``` - **处理接收到的消息**: 在接收端,定义处理程序函数来处理接收到的数据。 ```as function lcHandler(data:Object):void { trace("Received ...
localConn.addEventListener(StatusEvent.STATUS, onStatusHandler); ``` 3. 建立连接:在接收方SWF中,使用相同的名字尝试连接到发送方。 ```actionscript localConn.connect("uniqueName"); ``` 4. 发送和接收...
如果找到摄像头,将其添加到`StatusEvent.STATUS`事件监听器中以加载相机设置。如果找不到摄像头,将打印一条错误消息。 2. **设置视频显示**: 创建一个`Video`对象,并根据摄像头的宽度和高度进行初始化。使用`...
2. **fl.events**: 提供了各种事件类,如ProgressEvent、StatusEvent等,这些事件类用于处理程序运行时的交互和状态变化。 3. **fl.display**: 包含基本的显示对象,如Sprite、Shape、BitmapData等,它们是构建Flex ...
Flex 4的生命周期改进也体现在事件处理和元数据的使用上,例如` IOErrorEvent`和`StatusEvent`等事件,以及`[Bindable]`、`[SkinPart]`等元数据,这些都增强了组件与外部数据的交互和皮肤的自定义。 尽管Adobe提供...