【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3052|回复: 6

[分享]通过Socket实现flash与C++服务器通信

[复制链接]
发表于 2009-4-29 11:51:25 | 显示全部楼层 |阅读模式

游戏开发方方面面的知识都需要了解~

最近有几个同学需要做一个flash客户端与C++服务器连接模拟一个网游效果的项目,但是学生对flash普遍都不熟悉,因为这个原因,写一个小的教程来实现一个flash客户端和C++服务器之间交互的教程。

 

首先需要安装必备的编程环境。我写服务器端用的编辑器是vs.net 2003 用的flash版本是8.0

这个教程只讲实现,不讲原理;对于不懂的地方我尽量给出注释,如果需要深入了解,还是请大家去查看相关的专业书籍。

 

首先,新建一个flash文档,一般打开flash就会自动创建一个空白文档,默认的编辑区域是场景1;我们在场景中新增加一个影片剪辑,这是flash里的称呼,我们学习C++的可以理解为一个可视化的角色。

 

步骤  在flash8的菜单栏里-->插入--->新建元件

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

 

取好名字,点确定。假如这里我们叫这个影片剪辑叫做"npc2";

 

我们在右边的名称这个窗口里 可以看到我们刚才生成的电影剪辑
 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

 

现在我们的flash编辑器已经自动切换到电影剪辑编辑环境了,我在这里随便拉了一个形状表示角色,当然要写好网游作品,这里的就是你要绘制的角色动画集了。注意是动画集,也就是在这里可以做好动画,程序直接调用播放就行了。

 

下来我们看,这个已经画好了的npc2就是我们要控制的对象了。拍个大图,看到全部的界面

 

 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

 

我们现在操作的界面都是在是绿色圈子里的东西。

画好了以后,点红色的场景,切换到场景编辑。

把npc2从名称面板里拖出来,放在场景中。注意看橘红色部分,您的角色就放在理这个动画条的第一帧地方。

在下面的属性面板中,我们命名它为npc2 最好写英文名,因为这里的名字以后要在程序中作为对象调用。


 

是不是觉得有点像美工了,呵呵  好了下来我们开始进入程序部分,开始写代码!~

点那个紫色圈的按钮,增加一个新的动画层,flash里面的层的作用很多,这个层我们用来写代码,起个名字叫做AS.

我们在这里写代码,右键点击AS第一帧,在菜单中选择“动作”,打开了动作面板;这个面板就是程序编辑器。

如果没有可以插入的代码的地方,那是因为这个节点没有生成关键帧,点右键在这里添加一个关键帧,我们的代码要在关键帧里面写。

图片点击可在新窗口打开查看

 

我们要做的第一个事情就是,让刚才创建的这个npc2跟着我们的鼠标移动~~当然也可以点一下npc移动过去,这个就要靠你们举一反三了

 

var mouseListener:Object = new Object();

mouseListener.onMouseMove= function() {
npc2._x=_xmouse;
npc2._y=_ymouse;
}
Mouse.addListener(mouseListener);
 

[此贴子已经被作者于2009-4-30 9:07:48编辑过]
 楼主| 发表于 2009-4-29 12:00:48 | 显示全部楼层

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

 

 来详细解释一下里面的语法:

 

 

声明变量

 var mouseListener:Object = new Object(); 

 

在flash中,变量的声明都是var 开始 然后是变量名称,最后是类型,我们这里声明了一个 Object类型的变量mouseListener,用来做鼠标监听,Object类型和变量mouseListener之间用冒号隔开

 

mouseListener.onMouseMove= function() {                 //响应鼠标移动事件
npc2._x=_xmouse;                                                  //改变npc2这个电影剪辑的坐标为鼠标位置
npc2._y=_ymouse;

 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

 

Mouse.addListener(mouseListener);   把这个鼠标监听变量增加到鼠标监听中去。

然后 Ctrl+Enter 测试你的代码~~看到效果了吗???如果想改变成鼠标点击图片才动就不用说了吧~~当然想实现鼠标点地面,人物行走这个做C++的时候就会做了,代码是一样的。

[此贴子已经被作者于2009-4-30 8:46:29编辑过]
 楼主| 发表于 2009-4-29 14:06:40 | 显示全部楼层

下来我们来写flash连接服务器的代码~~~

在flash中 连接服务器已经封装好了~只需要调用方法就可以了

 

var connect:String = "127.0.0.1"       //需要连接的IP地址
var socket:XMLSocket = new XMLSocket();   //创建一个XMLSocket对象
socket.connect(connect, 5050);                   //连接服务器
socket.onConnect = function(success) {      //连接成功
socket.send("12");                                     //发送一个数据到服务器
}

 

学过C++的都知道这里面的含义。

 

 

但是这里是flash环境,如果写到刚才获取鼠标位置的代码里肯定是不行的。因为flash的本身影片是循环执行的,所以必须要做一下处理。

在开始的地方我们增加一帧,在这里面我们写上连接服务器的代码。 

 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

 

这样,在影片开始的时候就执行连接服务器代码,然后到第二帧开始执行我们的鼠标跟随代码。

不过,如果细心的同学会发现,这还是有问题的,因为当影片播放完毕,整个影片还是要从头开始播放,又要执行服务器连接代码,我们这步还是白做了。这样我们就要增加一个命令,让他播放的时候,不从头开始,而是从我们指定的地方开始播放,那么我们需要增加新的一个层loop。


 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

这个图层,建好以后,我们在他的第二帧这个地方,写上帧名turn_1。注意,下图是为了让你看清turn_1这个名字拉长了这个动画层,你可不要也乱拉~

 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

然后我们在动画播放的最后一帧加一个这样的代码。在AS的最后一个关键帧里面添加:

 

gotoAndPlay("turn_1");

 

这样,当我们的影片播放到只最后一帧的时候,他会直接跳到turn_1 这个标记位置开始播放,这样就不会执行第一帧的连接服务器代码了~~

 楼主| 发表于 2009-4-29 14:12:51 | 显示全部楼层

Ctrl+Enter 测试你的代码~~看到了吗??我们原来的服务器上有反应了~

 

[分享]通过Socket实现flash与C++服务器通信

[分享]通过Socket实现flash与C++服务器通信

这样我们就可以和服务器交互了

 

 

 

下面我修改了服务器和flash代码,实现了通过移动鼠标,让flash绘制的物体跟随,点击鼠标,发送当前坐标到服务器端的效果。

MloUxNqF.jpg
[此贴子已经被作者于2009-4-29 17:10:42编辑过]
发表于 2009-5-4 08:45:37 | 显示全部楼层

鼯鼠觉得flash与c++结合只能在服务端和客户端方面吗?

 

还有没有其他方面的.

 

似乎现在很热门的是java与flash在网页游戏,社区方面的应用.

发表于 2009-5-4 08:56:52 | 显示全部楼层

你好哈~~

这个项目是一个flash客户端的解决方案~~

Flash是一个很炫的技术,随着Adobe多媒体平台的成熟和网络技术的发展~

Flash一定是非常有前途的一个发展方向!

发表于 2012-10-7 17:36:37 | 显示全部楼层
不回不行了,因为楼猪太有才了。









华强网 :www.cwccw.com  美女图片 :www.yqkmt.com
无锡百姓网 :www.k0510.com  服务器技术论坛 :www.fwqbbs.com












你有什么事不开心的,说出来让大家开心一下吧 ! ?
华强网 :www.cwccw.com  美女图片 :www.yqkmt.com
无锡百姓网 :www.k0510.com  服务器技术论坛 :www.fwqbbs.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 12:02

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表