- 浏览: 719220 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (389)
- flex (150)
- java (55)
- flex_sharedObject (4)
- iphone/android (7)
- red5 (4)
- blazeds (19)
- ajax (3)
- flex&java (9)
- 聊天室 (2)
- flex的问题 (1)
- game (8)
- flex_xml (1)
- flex组件学习 (2)
- JGroups (1)
- 中转站 (2)
- ruby (7)
- flex_js (5)
- C/C++ (14)
- perl (2)
- db (13)
- air (10)
- hibernate (8)
- flash_flex_as_3d (2)
- struts (4)
- dwr (8)
- freemarker (2)
- AS (22)
- 工具 (6)
- js_jquery_ext_yui (4)
- .net (1)
- C# (1)
- 前端 (1)
最新评论
-
136900923:
您好,您的代码我不是很懂,我想跟您交流一下,我的qq邮箱:13 ...
hibernate做无限极菜单树如此简单 -
fykyx521:
两个同一个功能
flex_flush_Socket 安全沙箱解决 -
ustb:
你上下两个代码类之间没关系
flex_flush_Socket 安全沙箱解决 -
u010656335:
...
flex发送QQ表情 -
u010656335:
flex发送QQ表情
人物移动,是把一张图代码割开,然后通过鼠标和人物的角度判断,显示哪张图片
多人同步,我只是用red5服务器(因为不熟悉),我只是用他保存了sharedObject,服务器只是给定目标坐标
client多个人物移动,不需要移动一个坐标就告诉服务器。服务器只是给定你目标坐标,到底怎么移动,还是让客户端来完成
package simple { import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; import mx.controls.Alert; import mx.core.UIComponent; public class People extends UIComponent { /** // * 图片宽540,高864 一行9张图,共8行 * **/ [Embed(source="../image/h1.png")] private var people:Class; private var WIDTH:int=80; private var HEIGHT:int=91; private var ROW:int=8;//8hang private var COL:int=8;//每行8个角色 private var peo:Bitmap;//就是people private var image:Point;//按照任务计算出来的实际脚底的坐标 private var maps:Array=new Array();//或得各个人物不同的坐标 private var mousex:int; private var mousey:int; private var speed:int=3; private var count:int; public var arr:Array=[];//取 移动某个方向的各个人物动作; private var test:int=1;//图片变换太快,用这个变量改下 public function get Peo():Bitmap{ return peo; } public function People() { peo=new people() as Bitmap; init(); this.addChild(peo); // this.addEventListener(MyEvent.MOVING,other); } public function other(e:MyEvent):void{ trace("myevent"); this.mousex=e.x; this.mousey=e.y; image.x=peo.x+WIDTH/2; image.y=peo.y+HEIGHT; var obj:Object=this.moveAngle(); getMoveImage(obj.angle); // movePeople(); this.addEventListener(Event.ENTER_FRAME,movePeople); } public function init():void{ getAllPeople();//割图 peo.bitmapData=maps[0][0];//初始化时 在第4行第1个人物 this.addChild(peo); peo.x=300; peo.y=300; image=new Point(); image.x=(peo.x+WIDTH/2); image.y=peo.y+HEIGHT; //全局监听 // Application.application.addEventListener(MouseEvent.CLICK,moves); } public function getAllPeople():Array{ for(var i:int=0;i<ROW;i++) { var array:Array=new Array(); for(var j:int=0;j<COL;j++){ var bit:BitmapData = new BitmapData(WIDTH,HEIGHT,true,0); var mat:Matrix = new Matrix(); mat.tx = -j*WIDTH;//平移多少 mat.ty = -i*HEIGHT;//竖移动多少 bit.draw(peo,mat,null,null,new Rectangle(0,0,WIDTH,HEIGHT)); array.push(bit); } maps.push(array); } return maps; } public function moves(event:MouseEvent):void{ trace("moves++++++"); var me:MyEvent=new MyEvent(MyEvent.MOVING); me.x=mouseX; me.y=mouseY; this.dispatchEvent(me); this.mousex=mouseX; this.mousey=mouseY; // image.x=peo.x+WIDTH/2; // image.y=peo.y+HEIGHT; var obj:Object=this.moveAngle(); getMoveImage(obj.angle); // movePeople(); this.addEventListener(Event.ENTER_FRAME,movePeople); } public function movePeople(event:Event):void{ image.x=peo.x+WIDTH/2; image.y=peo.y+HEIGHT; var ylength:Number=mousey-image.y; var xlength:Number=mousex-image.x; var dist:int=Math.sqrt(xlength*xlength+ylength*ylength); var angle:Number=Math.atan2(ylength,xlength); var vx:Number=Math.cos(angle)*speed; var vy:Number=Math.sin(angle)*speed; peo.x+=vx; peo.y+=vy; test=test+1; if(test==2){ count=count+1; if(count==8){ count=0; } test=0; } peo.bitmapData=arr[count]; trace("length"+dist); if(dist<15){ peo.bitmapData=arr[0] this.removeEventListener(Event.ENTER_FRAME,movePeople); this.count=0; trace("remove"); return; } } public function getMoveImage(angle:Number):void{ //得到 要移动的方向的数组 var angle:Number=Math.abs((angle)*180/Math.PI); if(mousex>=image.x&&mousey<=image.y){//第一象限 getBearing(angle,2,7,3); }else if(mousey<=image.y&&mousex<=image.x){//第2象限 getBearing(angle,1,6,3); //mousex=201mousey=342 }else if(mousey>=image.y&&mousex<=image.x){//第3象限 getBearing(angle,1,4,0); }else if(mousey>=image.y&&mousex>=image.x){ //第4象限 getBearing(angle,2,5,0); } } /**把一个象限分成3分22.5,22.5~67.5,67.5~90我取整了**/ public function getBearing(angle:Number,first:int,second:int,three:int):void{ if(angle<23){ arr=maps[first]; }else if(angle>=23&&angle<68){ arr=maps[second]; }else if(angle>=68){ arr=maps[three]; } } // /** // * 计算鼠标点击后角色与人物之间的角度,(来输出相应的角色,完成走动) // * @Return int // * */ public function moveAngle():Object{ var obj:Object={}; var ylength:Number=mousey-image.y;//求出距离 y的距离 var xlength:Number=mousex-image.x;//求出距离 x的距离 var dist:Number=Math.sqrt(xlength*xlength+ylength*ylength);//求出距离 // var sinValue:Number=(ylength/dist);//求出对边比斜边的比值 // // var angle:Number=Math.asin(sinValue);//根据比值 求出角度 var angle:Number=Math.asin(ylength/dist); // trace("ttttt:::"+angle*180/Math.PI); var obj:Object={angle:angle,dist:dist, atan:Math.atan2(ylength,xlength)}; return obj; } // } }
package simple { import flash.display.BitmapData; import flash.events.Event; public class MyEvent extends Event { public static const MOVING:String="moving"; public var x:Number; public var y:Number; public var bit:BitmapData; public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); } } }
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:com="com.*" xmlns:simple="simple.*" creationComplete="init()">
<simple:People width="100%" height="100%" id="yong" x="100" y="100">
</simple:People>
<simple:People width="100%" height="100%" x="50" y="150" id="kang">
</simple:People>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import flash.net.SharedObject;
// import mx.logging.Log;
import simple.People;
import simple.MyEvent;
import mx.controls.Alert;
import flash.display.BitmapData;
private var net:NetConnection;
private var soChat:SharedObject;
private var clientId:int=0;
private var str:String;
private var arr:ArrayCollection
private var urlvar:String
//保存所有people信息;
private static var allPeople:ArrayCollection
private var people:People;
public function init():void{
kang.Peo.bitmapData=kang.getAllPeople()[1][0];
var url:String=Application.application.url;
var sp:Array=url.split("?");
var variable:String=sp[1];
urlvar=variable;
trace(variable+"sdssd");
if(urlvar=="id=1"){
Application.application.addEventListener(MouseEvent.CLICK,yong.moves);
}else{
Application.application.addEventListener(MouseEvent.CLICK,kang.moves);
}
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
SharedObject.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
net=new NetConnection();
net.connect("rtmp://127.0.0.1/red");//我用的是red5,/ red是我的一个随便的应用
//你改成其他都行不是red也行,反正是个应用就行
addEvent();
yong.addEventListener(MyEvent.MOVING,peopelMove1);
kang.addEventListener(MyEvent.MOVING,peopelMove2);
}
public function addEvent():void{
net.addEventListener(NetStatusEvent.NET_STATUS,showError);
soChat = SharedObject.getRemote( "movePeople1", net.uri, true );
soChat.client = this;
soChat.connect(net);
}
public function showError(e:NetStatusEvent):void{
trace(e.info.code);
trace(e.info.code=="NetConnection.Connect.Success");
}
private function peopelMove1(e:MyEvent):void{
soChat.send("setPoint1",e.x,e.y);
trace("set1");
}
private function peopelMove2(e:MyEvent):void{
soChat.send("setPoint2",e.x,e.y);
trace("set2");
}
public function setPoint1(x:Number,y:Number):void{
var me:MyEvent=new MyEvent(MyEvent.MOVING);
me.x=x;
me.y=y;
yong.other(me);
}
public function setPoint2(x:Number,y:Number):void{
trace("setPoint2");
var me:MyEvent=new MyEvent(MyEvent.MOVING);
me.x=x;
me.y=y;
kang.other(me);
}
]]>
</mx:Script>
</mx:Application>
- PeopleMoveOnWeb1.zip (2.5 MB)
- 下载次数: 509
- PeopleMoveOnWeb1.zip (2.5 MB)
- 下载次数: 149
发表评论
-
转深入理解Flash的沙箱 – Security Domains
2014-01-22 09:35 842一篇很经典的进阶文章,国外牛人的分享,清晰明了,图文并茂,适 ... -
flex 很有用的东东!
2010-06-17 23:50 1269网上找了好久,原来API中就有! -
flex出现的一些问题
2010-04-08 12:19 16701.kingnarestyle.swf和flexlib 的Su ... -
flex 样式工作原理【转】
2010-04-08 12:09 1326http://hi.baidu.com/ls_mcx/blog ... -
在FlexBuilder3中使用Actionscript3进行元编程
2010-03-11 19:15 1045http://flash.9ria.com/thread-46 ... -
Error: No class registered for interface mx
2010-02-01 09:36 1248http://www.gold98.net/blog/arti ... -
Flash 视频(FLV)编码,转换,录制,播放方案一网打尽
2010-01-16 18:34 2023http://www.htmlit.com.cn/post/8 ... -
FLEX中使用FLVPlayback控件.
2010-01-16 18:29 1402http://www.cnblogs.com/xxcainia ... -
flex 继承Application及xml命名空间
2009-12-30 18:43 1522<?xml version="1.0" ... -
flex Repeater effert加效果
2009-12-15 17:25 1528package cn.ishion.component { ... -
学习自定义组件---ConstomButton
2009-12-14 15:06 1838效果只是让Button动了下, 上传了flash源文件 p ... -
flex编译生成的As代码
2009-12-09 18:30 1316new flexProject ->起名叫 test ... -
flex自定义preloader
2009-12-09 17:43 1918package cn.ishion.component { ... -
flex自定义程序 preloader 加载多个资源
2009-12-09 02:05 2291package cn.ishion.component { ... -
Flex Builder编译错误An internal build error has occurred的解决方法
2009-12-05 16:44 3216原文:http://as3blog.com/resources ... -
flex uicomponent.addChild(Button) Button不显示
2009-12-04 19:23 2148设置下Button的宽度和高度就行了 var ui:U ... -
as3 xls导出excel乱码问题解决办法
2009-12-04 11:37 3402http://blog.csdn.net/Baijinwen/ ... -
FlashDevelop配置Flex4(gumbo)环境
2009-12-04 10:27 3058http://www.flexrain.cn/fl ... -
flex gooogle code as3xls导出数据到excel
2009-12-03 19:16 2365var ex:ExcelFile=new ExcelFile ... -
Flex坐标系统及转换
2009-12-02 22:10 3105http://flash.9ria.com/thread-40 ...
相关推荐
在Flex游戏开发中,创建一个游戏人物移动和多人同步的简单实例涉及到多个关键知识点,这里我们将深入探讨这些技术。 首先,让我们关注人物移动的实现。在2D游戏场景中,通常使用精灵(Sprite)类来表示游戏中的角色...
在这个场景中,"flex 做的一款射击类游戏"指的是使用Flex技术开发的在线射击游戏。 游戏开发通常涉及以下几个核心知识点: 1. **ActionScript**:Flex的基础是ActionScript,一种面向对象的编程语言,用于控制动画...
7. **网络通信**:虽然这是一个客户端的Demo,但如果游戏是多人在线的,Flex可以使用Socket或HTTPService与服务器进行通信,实现玩家间的交互和数据同步。 8. **资源管理**:游戏中的音频、图片、字体等资源需要被...
8. **网络通信**:如果是多人在线游戏,Flex可以利用AMF或WebSocket等技术实现实时的客户端-服务器通信,同步游戏状态。 9. **声音和视频**:Flex可以嵌入和控制音频和视频,为游戏增添音效和背景音乐,提升游戏...
Flex MMOG(大型多人在线角色扮演游戏)服务器是基于Adobe Flex技术构建的游戏服务器,它允许开发者创建丰富的、交互性强的在线游戏环境。本资源"flex-mmorpg-server.rar_flex_mmorpg"包含了这样一个服务器端的代码...
在Flex游戏开发中,"小人地图"通常指的是一个具有角色移动和障碍物躲避功能的游戏场景。Flex是一种基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在这个特定的“小人地图”项目中,我们...
最后,考虑到网络功能,Flex也支持WebSocket、HTTPService等网络通信协议,这意味着3D跳棋游戏可以轻松实现多人在线对战模式。玩家可以通过网络连接与其他玩家实时对弈,增加了游戏的趣味性和互动性。 总的来说,"3...
Flex提供了强大的图形渲染和动画API,可以创建流畅的动画效果,如牌的翻转、移动等,使游戏更加生动有趣。 总的来说,通过研究“Flex + AS3扑克牌类游戏源码1”,开发者可以深入理解Flex和AS3的结合应用,学习如何...
2. **游戏中移动同步的原理和简单实现**:通过共享对象可以实现实时数据同步,例如游戏角色的位置信息更新。 #### 五、服务器执行计划 1. **定时任务**:Red5支持定时任务的设置,可以用来定期执行某些操作,如...
3. **Flex集成**:FMS与Adobe Flex框架的紧密集成,使得构建基于Flex的富互联网应用程序(RIA)更为便捷,提供了丰富的UI组件和数据绑定功能。 4. **内容保护**:引入了数字版权管理(DRM)技术,增强了内容的安全...
此外,优化性能、处理网络同步(如果设计为多人在线游戏)以及添加音效和视觉特效等,也是进一步完善游戏体验的重要步骤。 总的来说,"飞机大战"小例子提供了一个基础的LayaBox AS3游戏开发模板,它涵盖了游戏开发...
ActionScript 3是Adobe Flash Professional和Flex Builder等开发工具中的主要编程语言,它基于ECMAScript规范,具有强大的面向对象能力,使得开发者能够创建出功能丰富的交互式内容。在《丛林对打》这款游戏中,AS3...
随着云计算和移动互联网的发展,Adobe LiveCycle Data Services ES 2 Version 3也在不断进化,未来的版本将更加注重云服务支持、跨平台兼容性以及与其他Adobe产品的集成度。 #### 九、结语 Adobe LiveCycle Data ...