Torque2D MIT 脚本阅读(2) FlipToy

FlipToy用来演示图像/动画翻转的效果.

模块定义

<ModuleDefinition
	ModuleId="FlipToy"
	VersionId="1"
	Description="Demonstrates flipping the rendering of sprites horizontally and vertically."
	Dependencies="ToyAssets=1"
	Type="toy"
	ToyCategoryIndex="3"
	ScriptFile="main.cs"
	CreateFunction="create"
	DestroyFunction="destroy">
                // 自身所有资源申明
	<DeclaredAssets
		Path="assets"
		Extension="asset.taml"
		Recurse="true"/>
</ModuleDefinition>

代码片段

function FlipToy::createSprite( %this, %position, %size, %flipX, %flipY )
{
    // 创建精灵
    %object = new Sprite();
    
    // 位置设置(后面会说到,这个是场景可缩放游戏特有的)
    %object.Position = %position;

    // 精灵尺寸
    %object.Size = %size;
    
    // 资源设定
    %object.Animation = "FlipToy:pufferfishAnim";
    
    // 翻转设置
    %object.setFlip( %flipX, %flipY );
    
    // 加入到场景中
    SandboxScene.add( %object );    
}

坐标与画布

  Torque2D的坐标系以画布中心(一般是屏幕中心)为原点.相机的视野尺寸应该和画布的大小相关联,比如画布上元素很少,那么如果相机视野过大,布局上就很单调.反之效率也不好.

  拿这个例子来说,在创建的过程中,一共设定了4个精灵:

 // Create a sprite.
 %this.createSprite( "-25 19", "50 37.5", false, false );
 %this.createSprite( "25 19", "50 37.5",  true, false );
 %this.createSprite( "-25 -19", "50 37.5", false, true );
 %this.createSprite( "25 -19", "50 37.5",  true, true );    

 从代码上可以看出,四个精灵的排布一共占的区域是{100,75},而窗体一般都是比这个大很多的,所以如果不进行对应的相机视野修改,那效率非常差.

相机视野修改的代码在FlipToy中是看不见的,这里说明一下,他的设置在SandBox模块的Scene.cs中,在创建场景窗口的时候设定了,代码如下:

    SandboxWindow.setCameraPosition( 0, 0 );
    SandboxWindow.setCameraSize( 100, 75 );
    SandboxWindow.setCameraZoom( 1 );
    SandboxWindow.setCameraAngle( 0 );

 我们可以在需要的时候修改,调用上面的SetCameraSize就可以了~

效果图:

原文地址:https://www.cnblogs.com/KevinYuen/p/2944820.html