AS3 自己写的一个2D游戏摄像机类,JCamera

原创 2012年03月22日 19:43:08

在参考了别人的效果之后。


经整理了一下思路,得出了2D游戏摄像机的思路。


简单的写了一个,功能可以扩展:

package view
{
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.geom.Point;
	import flash.utils.Dictionary;

	/**
	 * 摄像头类
	 * @author Jave.Lin
	 */	
	public class JCamera extends Sprite
	{
		private var _camera_Width:Number=0;
		private var _camera_Height:Number=0;
		
		private var _layerContainerDic:Dictionary=new Dictionary();
		
		public function get camera_Width():Number{return _camera_Width;}
		public function get camera_Height():Number{return _camera_Height;}
		//目标点
		public var targetPosition:Point;
		//上次点
		public var lastPosition:Point;
		//当前要偏移的点
		public var offsetPosition:Point;
		
		public function JCamera($targetPosition:Point,$width:Number=1200,$height:Number=700)
		{
			super();
			setSize($width,$height);
			targetPosition=$targetPosition;
			offsetPosition=new Point();
			lastPosition=new Point();
		}
		
		public function addLayerContainer(containerName:String,dc:DisplayObjectContainer):void
		{
			if(_layerContainerDic.hasOwnProperty(dc.name))return;
			_layerContainerDic[dc.name]=new CameraContainer(dc.x,dc.y,dc,containerName);
		}
		
		public function setSize($width:Number,$height:Number):void
		{
			_camera_Width=$width;
			_camera_Height=$height;
			refreshSize();
		}
		
		public function refreshSize():void
		{
			this.graphics.beginFill(0,0);
			
			this.graphics.drawRect(
				-camera_Width/2,-camera_Height/2,
				camera_Width,camera_Height);
			
			this.graphics.endFill();
		}
		
		public function update():void
		{
			offsetPosition.x=targetPosition.x-lastPosition.x;
			offsetPosition.y=targetPosition.y-lastPosition.y;
			
			for each (var cc:CameraContainer in _layerContainerDic) 
			{
				cc.container.x+=-offsetPosition.x;
				cc.container.y+=-offsetPosition.y;
			}
			
			lastPosition.x=targetPosition.x;
			lastPosition.y=targetPosition.y;
		}
	}
}


相关文章推荐

AS3多人游戏开发—同步人物移动

在实时性要求比较高的多人游戏中,我们将面临不同客户端间的同步问题,而其中人物移动的同步是最常需要考虑的。这篇文章将描述作者对这个问题的一些思考和解决方案(基于ActionScript3)。   大多...

Flash获取监控摄像头信号(转)

普通WEB摄像头的“自动光圈”会在环境光线发生变化后自动调节光圈大小,这是视频互动最忌讳的情况,所以我的所有项目都基于专业的监控摄像头了。可惜Flash却得不到来自监控卡的视频信号,解决的办法就是不再...

利用Flash获取摄像头视频进行动态捕捉

一、引言      摄像头游戏是随着摄像头的普及和图形图像技术的不断发展而出现的。它摆脱了鼠标键盘的限制,给游戏者带来全新的游戏体验,能够实现许多传统游戏无法实现的游戏效果。它通过摄像头将玩家投影到游...

AS3 摄像机类,国人用starling基础上,写了一个挺强大的

原文:http://forum.starling-framework.org/topic/camerafocus-a-2d-camera-class-for-sparling demo演示:...

推荐一个2D骨骼动画编辑工具,可以用在Unity3D和As3

http://liweizhaolili.blog.163.com/blog/static/16230744201432310562274/ 如果你喜欢做2D横版游戏,使用2D骨骼动...

unity的一个2D飞机游戏完整项目

  • 2017年10月31日 14:21
  • 19.66MB
  • 下载

HGE一个2D游戏引擎

  • 2009年05月24日 11:42
  • 8.87MB
  • 下载

JAVA与AS2制作一个2D多人游戏(3)

要进行信息交互,首先要建立一对互相连接的Socket 客户端代码如下 public function Client() { Socket = new XMLSocket(); Sock...

Flash AS3 自製2.5D半成品遊戲

  • 2012年10月26日 16:44
  • 1.92MB
  • 下载

AS3Box2D小游戏

  • 2011年10月28日 18:04
  • 319KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AS3 自己写的一个2D游戏摄像机类,JCamera
举报原因:
原因补充:

(最多只允许输入30个字)