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;
		}
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

flash as3 实现简单视频截图

  • 2011年07月27日 14:11
  • 26KB
  • 下载

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

原文:http://forum.starling-framework.org/topic/camerafocus-a-2d-camera-class-for-sparling demo演示:...
  • linjf520
  • linjf520
  • 2012年03月22日 18:11
  • 3032

ActionScript 3.0 学习(十) AS3 模拟转盘抽奖小程序

日常生活中经常见到一些类似跑马灯的转盘的抽奖系统,一下程序运用TweenLite实现了类似的该功能。改程序需要导入greenSock.swc以及需要用到的美术资源生成的swc文件。  packa...
  • BoRenLiang
  • BoRenLiang
  • 2015年09月05日 10:53
  • 1294

Unity3D 2D游戏摄像机的跟随实现

新建一个Canvas,Canvas设置Render Mode为World Space。Event Camera为主摄像机。Rect Transform的Width:800,Height:480.新建一...
  • u013108312
  • u013108312
  • 2016年08月10日 15:58
  • 2422

ActionScript 3.0 学习(十一) AS3 模拟接金币小游戏

本节程序实现了模拟接金币小游戏,接到青绿色时就加分,接到深蓝色时则会扣分。程序中主要要应用的知识点有:按键检测,随机数生成,碰撞检测,运用显示对象name属性判别其颜色。 package { imp...
  • BoRenLiang
  • BoRenLiang
  • 2015年09月05日 11:06
  • 1423

flash+as3.0+swfobject实现摄像头拍照

前言:先说说为什么要采用flash方式实现摄像头拍照功能,本来我一开始使用Html5方式实现了摄像头拍照功能,结果客户测试时使用的浏览器是ie8,我去,我自己平常从来不用ie,直接在谷歌上测试,没啥问...
  • qiao506151803
  • qiao506151803
  • 2017年08月04日 15:09
  • 856

Unity2D平台跳跃游戏摄像机跟踪的区域限制

如上图: 有时候我们不希望摄像机在跟踪角色的时候会跑到背景地图之外的地方,这样会给人一种穿帮的感觉。 我们或许只希望摄像机的左边框移动到地图的左边缘处就停止跟踪,也就是图中粉色箭头画出的区域限制以...
  • qq272508839
  • qq272508839
  • 2017年03月05日 15:53
  • 796

as3 一些框架!

转自 http://blog.sina.com.cn/s/blog_4a1606960100ixeu.html#post 有删改 这篇文章开始于对Adrian Parr博客中AS3 Code Li...
  • u013406800
  • u013406800
  • 2015年03月16日 13:04
  • 399

AS3.0实现遮罩渐变效果

package ch13_1 { import flash.display.Graphics; import flash.display.MovieClip; import flash.di...
  • u010031939
  • u010031939
  • 2013年08月17日 10:20
  • 2390

[GDC 2015] Scroll Back - 2D 卷轴游戏的摄影机理论与实务

本文转载自:https://igdshare.org/content/gdc2015-2d-scrolling-itay-keren 直接開門見山地說,這場演講是我在 GDC 的獨立遊戲峰會(...
  • akof1314
  • akof1314
  • 2015年07月14日 19:42
  • 3008
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AS3 自己写的一个2D游戏摄像机类,JCamera
举报原因:
原因补充:

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