- 浏览: 509575 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
michao:
大哥,还有aperture.exe吗? 发我一份,找不到呀,m ...
使用aperture框架让AS3与C++通信,执行本地代码 -
Aaron-Joe-William:
文件被删除了。下不了。
SQLite 数据库加密的一种解决方案 -
hanmiao:
樓主的文章不就是來自IBM Developers里的http: ...
mina 入门 -
howesen:
断包与粘包问题,需要处理下就好了
mina接收数据不全(2) -
sniciq:
git clone --recursive git://git ...
ESB学习笔记(Spring Integration实战)
假设有一个主 SWf 名为 main.swf 加载一个名为 game.swf 的游戏模块:
1. main 里面使用 Loader 将
game.swf 加载进来;
2. 在 game 中定义 public function moveBall(speed:Number)
方法,用于开始游戏;
3. 在 main 里面使用类似 loader["content"].moveBall(speed) 的语句调用 game.swf
里面的方法;
4. game.swf 与 main.swf 通信的方法,可以使用 dispatchEvent 方法与 main.swf
通信,也可以继续使用上述方法。
下面请看示例:
1. 首先创建被调用的 game.swf:
package {
import flash.display.Sprite;
import flash.events.Event;
import
flash.system.Security;
public class Game extends Sprite {
private var ball:Sprite;
private var speed:Number;
public function Game() {
// 在 Flash IDE 中执行 Debug
Security.allowInsecureDomain("*");
if (stage)
init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
ball =
new Sprite();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, 50);
ball.graphics.endFill();
addChild(ball);
ball.x =
50;
ball.y = stage.stageHeight / 2;
}
public function moveBall(speed:Number):void {
this.speed = speed;
addEventListener(Event.ENTER_FRAME,
onGameLoop);
}
private function
onGameLoop(e:Event):void {
ball.x += speed;
}
public function stopMove():void {
removeEventListener(Event.ENTER_FRAME, onGameLoop);
}
}
}
在这个类里创建了一个小球实例 ball,还提供了两个公开的方法 moveBall(speed) 和
stopMove(),用于控制小球的运动与停止。最后,编译该文件将生成好的 game.swf
放到应用服务器的根目录上(http://localhost/game.swf)。
2. 下面创建主程序,调用 game.swf
并与其通信
package {
import flash.display.Loader;
import
flash.display.Sprite;
import flash.events.Event;
import
flash.events.MouseEvent;
import flash.net.URLRequest;
import
flash.system.Security;
public class Main extends Sprite {
private var loader:Loader;
public function Main() {
if (stage) init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// 允许访问变量、对象、属性、方法等
Security.allowDomain("*");
loader = new Loader();
addChild(loader);
// 加载 http://localhost/game.swf
后面的参数用于防止缓存
loader.load(new
URLRequest("http://localhost/game.swf?" + new Date().time));
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoadComplete);
}
private function onLoadComplete(e:Event):void
{
// 调用 game.swf 中的 moveBall(speed) 方法
loader["content"].moveBall(5);
// 点击舞台后调用 game.swf
中的 stopMove() 方法
stage.addEventListener(MouseEvent.CLICK,
onClickStageHandler);
}
private function
onClickStageHandler(e:MouseEvent):void {
loader["content"].stopMove();
}
}
}
主程序中先将
game.swf 加载进来,然后调用 game.swf 中的 moveBall(speed) 方法,并侦听在舞台发生点击事件后调用 game.swf 中的
stopMove() 方法。
3. game.swf 与 main.swf 通信方法:
调用的方法可以和 main.swf 调用
game.swf 一样,也可以使用事件调度,下面是事件驱动方法:
(1)定义 GameEvent.as 事件
package {
import flash.events.Event;
public class GameEvent extends Event
{
public static const GAME_START:String = "game_start";
public static const GAME_OVER:String = "game_over"
public
var score:uint;
public function GameEvent(type:String,
score:uint = 0) {
this.score = score;
super(type);
}
}
}
(2)在 Game 中当调用
moveBall(speed) 方法时分发 GameEvent.GAME_START 事件:
dispatchEvent(new
GameEvent(GameEvent.GAME_START));
在 Game 中当调用 stopMove() 方法时分发
GameEvent.GAME_OVER 事件:
dispatchEvent(new GameEvent(GameEvent.GAME_OVER,
ball.x)); // 将小球的 x 坐标作为 GameEvent 的参数发出
(3)在 Main 中侦听这两个事件(当 game.swf
被加载进来后):
loader["content"].addEventListener(GameEvent.GAME_START,
onGameStartHandler);
loader["content"].addEventListener(GameEvent.GAME_OVER,
onGameOverHandler);
private function
onClickStageHandler(e:MouseEvent):void {
loader["content"].stopMove();
}
private function
onGameOverHandler(e:Object):void {
trace(e.score);
}
private
function onGameStartHandler(e:Object):void {
trace(e.score);
}
请注意处理事件的类型不是 GameEvent 而是 Object,理论上应该是 GameEvent
,但是如果这样声明的话会出现“强制转换类型失败”,因此只能用 Object 来替代。
演示文件源码下载:swfs_communication.rar
发表评论
-
十个Flex/Air疑难杂症及解决方案简略
2010-05-31 17:17 3341最近去一家台企面 ... -
Windows环境下配置+运行red5源码+AS3连接red5简单示例
2010-04-19 13:39 5182Windows环境下配置+运行red5源码+AS3连接red5 ... -
使用aperture框架让AS3与C++通信,执行本地代码
2010-04-08 16:48 3246我们都知道,AIR的效果是非常出色的,这也是大家喜欢她的原因, ... -
SQLITE入门至精通
2010-04-07 11:13 3006关键 ... -
教你解析FLEX JSON中的一个问题 关于键值 和键
2010-04-01 15:25 2315字符串:message = ' "param&quo ... -
air写文件保存在安装目录
2010-03-31 15:46 3218AIR中..保存文件我们般会像下面这样操作 var f ... -
弱弱的一个小问题,bitmapdata pngencoder base64 bytearray
2010-03-31 14:16 1152好久没写东东了,呵呵。随便写点点。关于bitmapdata如何 ... -
如何把as文件生成swf格式文件
2010-03-02 18:22 5273一,从http://opensource.adobe.com/ ... -
Flex数据交互方法 :httpservice, webservice, RemoteObject, socket
2010-02-27 17:06 1909【转载】 文章分类:Flash编程 http://h ... -
理解Flash Player 9垃圾回收机制
2010-02-02 18:27 1085理解Flash Player 9垃圾回 ... -
BlazeDS入门教程-很详细-赞原创作者一个
2010-01-11 23:51 1718什么是BlazeDS呢?BlazeDS是一个基于服务器的Ja ... -
一些漂亮的Flex主题下载
2010-01-11 10:31 6157一些漂亮的Flex主题下载1Digg meWindows Cl ... -
通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用(一)
2010-01-08 17:43 5397作者:Jozsef Vass 译者:巴巴鲁 ... -
ActionScript 3.0著名开源库 大集合
2009-12-29 17:26 2027这篇文章开始于对Adrian ... -
Flex 读取XML配置文件总结
2009-11-19 11:45 1984在Flex中我 ... -
一个list定义组件,网上找了很久没有,自己做了一个。
2009-10-29 11:55 1231一个list定义组件,网上找了很久没有,自己做了一个。希望对大 ... -
如何使用Flex RemoteObject components 与JAVA交互
2009-10-08 18:04 52992008-12-25 | 22:53分类:前端开发 ... -
flex 在线录制视频语音
2009-09-12 17:45 3636<?xml version="1.0" ... -
flex 蒙板 遮罩
2009-09-11 17:09 3873方法一 <mx:Image source=&q ... -
如何自定义FLEX3的loading进度条
2009-09-05 10:17 1750第一种:修改下载进度的文字为中文 建立扩展至 mx.prel ...
相关推荐
1. **双向通信**:Delphi可以控制Flash组件的行为,如播放、暂停、停止动画,改变显示内容等;同时,Flash也可以向Delphi发送消息,例如用户在Flash中的操作结果,这样可以实现数据的实时反馈。 2. **事件处理**:...
External Interface是AS3(ActionScript 3)中内置的功能,允许Flash内容与宿主环境(通常是网页)中的JavaScript进行双向通信。Bridge技术则包括Flash的本地连接(LocalConnection)和自定义的通信协议,用于...
通过这个实例,开发者可以学习到如何在VB环境中集成Flash内容,并实现双向通信。 关于标签“vb Flash 通信”,这表明本实例关注的重点是VB与Flash间的接口和通信机制。VB通过ActiveX控件与Flash交互,具体来说,...
Java与Flash之间的socket通信是一个基于TCP/IP协议的双向通信机制。在Java端,我们可以创建一个ServerSocket监听特定端口,等待客户端(这里是Flash)连接。当Flash客户端建立连接后,Java端可以读取SWF文件并将其...
### VB与Flash的双向交互详解 #### 一、引言 在早期的软件开发领域,Visual Basic (简称VB) 和 Flash 是两种非常流行的开发工具。VB 主要用于 Windows 平台上的应用程序开发,而 Flash 则是制作网页动画、游戏等...
在Flash中,Socket类提供了低级别的网络通信能力,允许应用程序通过TCP/IP协议与服务器进行双向通信。在`Main.as`文件中,你可以找到Flash客户端的Socket实例化和相关事件处理代码。当创建一个Socket对象后,需要...
这通常涉及到创建一个COM对象,定义一些方法,这些方法可以在ActionScript中调用,从而实现双向通信。 4. **数据交换**:Flash和VC之间需要传递数据,例如,Flash可能需要获取用户在VC程序中的设置,或者向VC报告...
2. LocalConnection:另一种通信方式是使用LocalConnection对象,它可以实现在同一台机器上不同Flash对象间的通信。在某些情况下,当ExternalInterface不可用或不适合时,LocalConnection可以作为替代方案。 3. ...
在IT领域,尤其是在Web开发中,Flash与ASP.NET(ASPx)页面的通信是一个常见的需求,尤其是用于实现富用户体验的功能,比如即时通讯和聊天应用。本案例中的"最新聊天窗体.swf"就是一个示例,它模拟了QQ聊天窗口,...
AMF是一种高效的数据序列化格式,适合于Flash和服务器间的双向通信;XML/SOAP则是一种更通用的格式,适用于不同系统间的通信。 6. **AS3与C#的通信**: 你需要设置一个Web服务(如ASP.NET Web Service或WCF服务)...
Canvas和WebGL用于2D和3D动画,Web Audio API处理音频,WebSocket实现双向通信。 7. **安全问题**:由于Flash的诸多漏洞,它成为了黑客攻击的目标,这也是Adobe最终决定终止支持的重要原因。 综上所述,虽然Flash...
1. **JavaScript通信**:使用Flash External Interface (ExternalInterface) API,SWF文件可以与JavaScript进行双向通信。这使得你可以控制SWF的行为,如播放、暂停、跳转等,也可以根据SWF的事件更新HTML页面状态。...
这个例子可能展示了如何使用Flash和JavaScript进行双向通信,比如实现按钮点击事件的交互、数据传递或者控制Flash播放等。尽管现代Web开发更多地依赖HTML5和WebGL,但理解Flash与JavaScript的通信仍然对理解Web历史...
3. **JavaScript-ActionScript通信**: 使用`ExternalInterface`类,Flash可以与JavaScript进行双向通信。在JavaScript中设置变量,然后在ActionScript中通过`ExternalInterface.call`方法调用JavaScript函数来获取...
这种Java与Flash的通信方式主要依赖于Socket接口,它允许双向通信,可以用于实现更复杂的应用场景,如文件上传、下载、实时聊天等功能。需要注意的是,由于Flash的安全策略,跨域通信可能需要设置Flash Player的策略...
",这在实现Delphi和Flash之间的双向通信时非常有用。 除此之外,TShockwaveFlash组件还支持其他一些高级特性,比如调整Flash的播放质量、是否启用全屏模式、设置音量等等。开发者可以根据实际需求,灵活运用这些...
本文将详细介绍如何利用Java与Flash进行通信,特别是在实现SWF(Shockwave Flash)文件的点对点连接以及读写操作方面。 #### 二、Flash的限制与解决方案 Flash在其发展过程中遇到了两个主要的技术瓶颈:SWF文件...
通过`ExternalInterface`,Flash和C#之间可以进行双向通信。在Flash ActionScript中定义一个外部接口函数,然后在C#中通过`SetVariable`方法调用该函数。同时,Flash可以通过`FlashCall`事件调用C#的方法。 总结: ...
总结起来,通过VC++的`FSCommand`和Flash的`ExternalInterface`,我们可以实现C++与Flash之间的双向通信,使得C++能够控制Flash的行为,而Flash也能响应C++的调用,从而创建出丰富的交互式应用程序。这种技术在游戏...
Adobe Flash Player提供了一个名为`ExternalInterface`的API,允许Flash内容与JavaScript进行双向通信。通过`ExternalInterface.addCallback`方法,ActionScript可以注册一个函数,使得JavaScript可以通过调用该函数...