pbelabs我的世界附魔书怎么用用

Access denied | na.leagueoflegends.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (na.leagueoflegends.com) has banned your access based on your browser's signature (3d86ae21e81c2894-ua98).Adobe Flash Builder 4 简体中文正式版 Windows版点击下载:
Adobe Flash Builder 4 简体中文正式版 Mac版点击下载
Adobe 在线课堂:
Adobe平台技术峰会课程视频:
在前几篇文章中,我已经介绍了如何创建你的工作区
以及如何创建场景,并添加
实体。在本文中,我将向你介绍如何关联基本的键盘输入,以控制玩家在场景中实际移动。
在了解代码前,最好对你添加输入控制时打开的不同选项有一定了解。你可以直接关联
实例,也可使用输入映射。直接关联很简单,但是需要保证你的实体和
之间有紧密的关系。
例如,如果你想要使使用者自定义游戏控制按键
这是非常对我胃口的一项设计,因为我是左撇子,我的右手操作键盘不如左手那么灵活
。这同样也使得用
的描述符文件的支持变得难于实施,因为他们期望一种替代机制
一种输入映射来配置输入。
该输入映射是直接与进行关联的一种替代
更准确地说是一种扩展
使用一种输入映射的优点在于其可从
提取键位关联。这使得你可更方便地在任何一点改变键位。另外,输入映射还使得从基于
文件中进行配置变得更为简单
这会在以后的文章中详述)。现在,让我们看看如何通过两种机制来进行键盘输入映射。
进行键盘控制
将键盘控制添加至你的游戏的最简单的方法是
方法。但是,如你将看到的,这可能导致过多复杂而难以控制的映射信息。让我们就从这个入门,以便你在今后加以提高。和其他情况一样,你需要创建一个类来管理输入操作。这将从
来继承,这样在每个游戏时间(
),都可以对其加以调用。基本架构是采用你的控制权,而不管
要对你的实体进行各方面的关联,你需要导入相关属性引用。你可以发布所需
的变量,然后通过所有人引用来在需要时进行访问。因此,你可以从如下范例代码中看出,有一个变量名为
),要访问它,只需调用
方法,并导入你想要访问的引用,作为方法签名。
要对一条属性进行任何更改,
只需调用计数方法
这种方法涉及两种参数
引用的属性和你想要为其所设的值(如上述代码底部所示)。
对键盘输入进行映射是很简单的,因为
开发者已经提供了你关联所想使用的几乎每个按键的常数
可点击此处查看列表
完整的键盘控制类(
将控制器添加至你的实际实体是很简单的。只需发布元素即可
这里指你的
,并为其分配所需属性。最后,确保其添加至实体本身;如下列代码所示:
这都是基于上一篇文章《开始使用
》中介绍的玩家(主角)来设置的。但该代码是整洁而简要的
假设我只映射了
个按键,它不能将输入控制指令和实际控制类中定义的指令进行紧密关联。一种更好的方法是将该信息进行提取,以便其可有用户或外部配置来进行定义。可采用
类来实现这一目的。&
进行灵活得键盘映射&
类需要一点逆向思维,这主要是因为最好是从控制器开始,再回到将使用它的实体。现在
类既有一些你肯定不会陌生的方便方法:
列表中最后一个是不言自明的,通过它,你可以输入
任务、每个处理器(
的名称,且当按键按下时,处理器被调用。关于这些方法,有一点你必须了解,即它们不会将一个事件对象传给处理器。它们只是早按键按下时传递值
一),在按键弹起时传递值
下列范例显示了如何使用前两个方法:
。将这两者想象为一个物体的两半。你把它们中的一个用于控制器内,而另一个在实体内(或你想映射的任何地方)。看看完整的键盘控制器
我之前称之为
,对其进行分解,即可有更深的认识。&
如你所见,这与第一个控制器类并非差之千里。但是,最大的不同是与最后的
方法有关。我在
中查看是否有一个有效的
对象,如果有,则使用
在控制器中创建一个映射。如你所见,其取一个串值并将其与一个事先确定的处理器向关联。
在这些相关处理器中,只有一个变量,该变量设为传递给它的当前数值
具体取决于该键是上还是下
)。最后的不同是在
方法中。与之前的控制器范例(明确检视每个键来确定是否按下)不同,该范例采用的是处理器变量值:
再观察完整代码,你可能会发现,我没有在代码中任何地方发布实际输入按键;
而是提供了一种抽象的方法来帮助你进行键盘映射。但是,对于控制器类来说,这就够了。不过你将如何进行实际的映射工作?在本例中,你是在实体本身内进行映射。与你过去用来将添加基本键盘控制器添加至实体所用的三行代码不同,你需要添加更多的参数:&
这并没有那么难,但是你可以看出,你是通过我们的控制器的
方法来对输入按键进行映射的。简言之,要确保你记得例示
,否则就会失败
我当然知道,但还是要说明下,因为我们常常因忽略简单的事情而失败。
在本文中,你学到了如何通过
实施简单的键盘控制,首先通过你的控制器类里明确定义输入键,然后通过
)进行提取。你还学到了如何使用
类来轻松地解除实际输入键和游戏之间的关联
使得使用者可自定义键盘配置。
本文已收录于以下专栏:
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)用PushButton制作Flash游戏4-载入XML - BlueJack - 博客园
原文链接:
上一课我们看到了如何创建一个简单的实体(Entity)来显示一个嵌入的资源图片。在一个真正的游戏中,可能需要创建成百上千个这样的实体(Entity)。对于一个程序员来说,如果都用ActionScript去创建也没什么问题,可是对于关卡设计师或其他人,让他一行行的写代码来设计关卡,可能就有点困难了。PBE提供了这样一个功能:在XML文件中编辑关卡,然后载入这个XML文件来创建我们的游戏世界。好,让我们看看如何做。
在assets文件夹中创建2个XML文件:level1.xml和levelDescriptions.xml。
编辑level1.xml:
&things version="1"&
&entity name="Player"&
&component type="com.pblabs.rendering2D.SimpleSpatialComponent" name="Spatial"&
&position type=""&
&/position&
&spatialManager componentReference="SceneDB"/&
&/component&
&component type="com.pblabs.rendering2D.SpriteRenderer" name="Render"&
&scene componentReference="SceneDB"/&
&positionProperty&@Spatial.position&/positionProperty&
&fileName&assets/player.png&/fileName&
&/component&
&group name="Level1"&
&objectReference name="Player"/&
&/group&&/things&
解释一下:
&things version="1"&
这是根节点,所有关卡数据都包含在其中。
&entity name="Player"&
这里定义了实体Player。注意,只是定义,并没有实例化。实例化是在后面的&group&标签中。
&component type="com.pblabs.rendering2D.SimpleSpatialComponent" name="Spatial"&
&position type=""&
&/position&
&spatialManager componentReference="SceneDB"/&
&/component&
为Player创建Spatial组件。&position&中是坐标。&spatialManager&中指定"SceneDB"为spatialManager。这个"SceneDB"是哪来的?查看一下PBE.initializeScene()的定义:
public static function initializeScene(view:IUITarget, sceneName:String = "SceneDB",                        sceneClass:Class=null,spatialManagerClass:Class = null,                        sceneAlignment:SceneAlignment = null):IEntity{}
原来"SceneDB"是默认的名称。
&component type="com.pblabs.rendering2D.SpriteRenderer" name="Render"&
&scene componentReference="SceneDB"/&
&positionProperty&@Spatial.position&/positionProperty&
&fileName&assets/player.png&/fileName&
&/component&
为Player创建Render组件。中间的内容和上一课的程序代码对照一下,应该很好理解。
&group name="Level1"&
&objectReference name="Player"/&
定义一个组,名叫"Level1"。用&objectReference&标签引用前面定义好的实体(entity)。还可以用&groupReference&引用其它的组。
再来看levelDescriptions.xml文件。
&levelDescriptions&
&level index="0"&
&level index="1" name="Level-1"&
&file filename="assets/level1.xml"/&
&group name="Level1"/&
&/level&&/levelDescriptions&
其实我们在程序中直接引用的是这个文件。&levelDescriptions&是根节点。每一个关卡的数据包含在&level&标签中。每个&level&标签有个index属性。注意保持这个值的唯一性。我先把&level index="0"&节点留空。这个节点好像有特殊的功能。待以后再仔细研究。
&level index="1" name="Level-1"&
&file filename="assets/level1.xml"/&
&group name="Level1"/&
这里name="Level-1"是关卡名称,但是我们在程序中引用的最多的还是index属性。&file&中的fileName属性指向具体的关卡数据文件。接着还要用&group&标明要创建的组,因为一个文件中可以包含很多组,也就是说一个文件中可以包含若干关卡中的内容,或各个关卡中公用的内容。而本关中具体要用到哪些,也就是要真正实例化哪些,就用&group&标明。
好,把这2个文件嵌入到程序中,GameResources.as:
import com.pblabs.engine.resource.ResourceB
public class GameResources extends ResourceBundle
[Embed(source = 'assets/levelDescriptions.xml', mimeType='application/octet-stream')]
public var levelDesc:C
[Embed(source = 'assets/level1.xml', mimeType='application/octet-stream')]
public var level1:C
[Embed(source = 'assets/player.png')]
public var player:C
注意!与图片等资源不同的是,XML文件一定要加上mimeType='application/octet-stream'。
最后一步,回到我们的主程序中,Main.as:
import com.pblabs.engine.PBE;
import com.pblabs.rendering2D.ui.SceneV
import flash.display.S
import flash.events.E
import com.pblabs.rendering2D.SimpleSpatialC
import com.pblabs.rendering2D.SpriteR
[SWF(width="480", height="384", backgroundColor="0x7F92FF")]
public class Main extends Sprite
public function Main():void {
//注册XML文件中用到的类
PBE.registerType(com.pblabs.rendering2D.SimpleSpatialComponent);
PBE.registerType(com.pblabs.rendering2D.SpriteRenderer);
PBE.startup(this);
PBE.addResources(new GameResources());
var sceneView:SceneView = new SceneView();
PBE.initializeScene(sceneView);
//载入关卡数据
PBE.levelManager.load("assets/levelDescriptions.xml", 1);
这里最容易忘记的就是注册XML文件中用到的类。因为这些类在主程序中并没有用到,程序编译时就不会编译进去。而载入关卡时用到了它们,就会发生错误。我们必须手动import,并用PBE.registerType()注册上。最后,终于可以载入了!用PBE的levelManager:
PBE.levelManager.load("assets/levelDescriptions.xml", 1);
第2个参数是我们要初始化的关卡ID,也就是&level index="1" name="Level-1"&中的index。
好,编译运行一下看看效果吧!

我要回帖

更多关于 pbelabs 的文章

 

随机推荐