Citrus Engine 学习笔记 第一弹 入口类和引擎demo

本文介绍如何使用Citrus引擎进行游戏开发,重点讲解了新版Citrus Engine V3.1.9的初始化方法,并提供了主类Main及GameState的具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网教程页面http://citrusengine.com/tutorials/上的入门视频教程讲得很详细,但是那是老版本的了,新版本比如我用的CEV3.1.9,那样写会报错,试了很多方法,最后在这个页面http://wiki.starling-framework.org/citrus/multi_resolution 找到解决,大概就是用一个入口类的模式来写。写法如下:

主类

package 
{
	import citrus.core.starling.StarlingCitrusEngine;
	
	/**
	 * ...
	 * @author Roshan
	 */
	
	[SWF(backgroundColor="#FFFFFF", frameRate="60", width="800", height="600")]
	public class Main extends StarlingCitrusEngine
	{
		
		public function Main()
		{
			
		}
		
		override public function initialize():void
		{
			setUpStarling(true);
			
		}
		
		override public function handleStarlingReady():void {
			state = new GameState();
		}
		
	}
	
}

其中千万不能漏掉

override public function handleStarlingReady():void {
			state = new GameState();
		}
这段,重载的这函数是当引擎初始化后就绪后所做的操作,所以把新建GameState放在这里,而不是原来那种直接写在
initialize()

函数里面,这个貌似是机制问题,不这样写会Flash Player会报错,说主类没有继承StarlingCitrusEngine,或者没调用setUpStarling()方法。



然后,新建一个GameState类,这个类的写法可以照搬官网demo的例子,自己参考api http://citrusengine.com/documentation/ 调用下各个组件试一试,比如:

package  
{
	import Box2D.Collision.b2AABB;
	import Box2D.Collision.b2ContactID;
	import Box2D.Dynamics.Contacts.b2Contact;
	import citrus.core.starling.StarlingState;
	import citrus.objects.platformer.box2d.Coin;
	import citrus.objects.platformer.box2d.Enemy;
	import citrus.objects.platformer.box2d.Hero;
	import citrus.objects.platformer.box2d.MovingPlatform;
	import citrus.objects.platformer.box2d.Platform;
	import citrus.physics.box2d.Box2D;
	
	/**
	 * ...
	 * @author Roshan
	 */
	public class GameState extends StarlingState 
	{
		
		public function GameState() 
		{
			super();
			
		}
		
		override public function initialize():void {
			super.initialize();
			
			var physics:Box2D = new Box2D("box2D");
			physics.visible = true;
			add(physics);
			
			add(new Platform("p1", {x:700, y:stage.stageHeight/4, width:stage.stageWidth/5,height:40}));
			
			var floor:Platform = new Platform("floor",{x:512,y:550,width:1024,height:40});
			add(floor);
			
			var mp:MovingPlatform = new MovingPlatform("Moving" ,
				{x:200,y:450,width:100, height:35, startX:200, startY:450, endX:500, endY:200,speed:3} );
			add(mp);
			
			var hero:Hero = new Hero("Roshan", { x:50, y:50, width:75, height:100 } );
			add(hero);
			
			var enemy:Enemy = new Enemy("tiger", { x:500, y:500, width:60, height:40,leftBound:100, rightBound:700, speed:2 } );
			add(enemy);
			
			var ring:Coin = new Coin ("ring", { x:750, y:60, width: 50, height:50 } );
			ring.onBeginContact.add(function(c:b2Contact):void {
				trace("Roshan Win!");
				remove(ring);
	
				
			})
			add(ring);
		}
	}

}
然后设定下Main.as为文档类,运行下就能看到效果了。


总结下,其实就是把原来initialize()的内容分离到handleStarlingReady()中处理,也可以加入其他内容,比如官方例子multi_resolution的做法,在这里处理适配不同分辨率的操作:

override public function handleStarlingReady():void
		{
			assetManager = new AssetManager(scaleFactor);
			assetManager.verbose = true;
 
			assetManager.enqueue("assets" + scaleFactor + "x");
 
			assetManager.loadQueue(function(ratio:Number):void
				{
					if (ratio == 1)
						state = new FirstState();
				});
		}
菜鸟自学日记就先记录到这,埋个坑以防自己忘了,呵呵
 

内容概要:本文深入探讨了Kotlin语言在函数式编程跨平台开发方面的特性优势,结合详细的代码案例,展示了Kotlin的核心技巧应用场景。文章首先介绍了高阶函数Lambda表达式的使用,解释了它们如何简化集合操作回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程跨平台开发领域不断完善发展。; 适合人群:对函数式编程跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解实践Kotlin的函数式编程特性跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解掌握。
内容概要:本文深入探讨了利用历史速度命令(HVC)增强仿射编队机动控制性能的方法。论文提出了HVC在仿射编队控制中的潜在价值,通过全面评估HVC对系统的影响,提出了易于测试的稳定性条件,并给出了延迟参数与跟踪误差关系的显式不等式。研究为两轮差动机器人(TWDRs)群提供了系统的协调编队机动控制方案,并通过9台TWDRs的仿真实验验证了稳定性综合性能改进。此外,文中还提供了详细的Python代码实现,涵盖仿射编队控制、HVC增强、稳定性条件检查以及仿真实验。代码不仅实现了论文的核心思想,还扩展了邻居历史信息利用、动态拓扑优化自适应控制等性能提升策略,更全面地反映了群体智能协作性能优化思想。 适用人群:具备一定编程基础,对群体智能、机器人编队控制、时滞系统稳定性分析感兴趣的科研人员工程师。 使用场景及目标:①理解HVC在仿射编队控制中的应用及其对系统性能的提升;②掌握仿射编队控制的具体实现方法,包括控制器设计、稳定性分析仿真实验;③学习如何通过引入历史信息(如HVC)来优化群体智能系统的性能;④探索中性型时滞系统的稳定性条件及其在实际系统中的应用。 其他说明:此资源不仅提供了理论分析,还包括完整的Python代码实现,帮助读者从理论到实践全面掌握仿射编队控制技术。代码结构清晰,涵盖了从初始化配置、控制律设计到性能评估的各个环节,并提供了丰富的可视化工具,便于理解分析系统性能。通过阅读实践,读者可以深入了解HVC增强仿射编队控制的工作原理及其实际应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值