Javascript EaselJS turbomedia通过曝光表实现可逆性
所以,我最近发现了EaselJS(以及更普遍的CreateJS),我正试图找到一种利用它制作turbomedia(ie)的方法 目前,我正在研究可逆性。turbomedia通过一系列状态/帧讲述其故事,一个关键特性是能够在这些帧之间随意来回移动(通常通过击键)。为了实现这种可逆性,我需要状态独立于以前的事件(即状态2必须是相同的,无论它是从状态1还是状态3到达的) 直到最近,我还只是处理单个位图(这样每个状态都对应于一个现有文件),所以问题永远不会出现。然而,现在我想让状态由多个图像组成(因为这允许更多的灵活性)。因此,状态可以由数组Javascript EaselJS turbomedia通过曝光表实现可逆性,javascript,arrays,createjs,easeljs,Javascript,Arrays,Createjs,Easeljs,所以,我最近发现了EaselJS(以及更普遍的CreateJS),我正试图找到一种利用它制作turbomedia(ie)的方法 目前,我正在研究可逆性。turbomedia通过一系列状态/帧讲述其故事,一个关键特性是能够在这些帧之间随意来回移动(通常通过击键)。为了实现这种可逆性,我需要状态独立于以前的事件(即状态2必须是相同的,无论它是从状态1还是状态3到达的) 直到最近,我还只是处理单个位图(这样每个状态都对应于一个现有文件),所以问题永远不会出现。然而,现在我想让状态由多个图像组成(因为这
[“sky3”、“ground2”、“character5”]
来描述,意思是“该状态包含存储在sky3、ground2和character5中的图像”
我遇到的问题是双重的
首先,我需要能够比较数组内容,以便在当前状态更改时,新状态与前一状态进行比较,并根据需要交换图像(即从[“sky1”,“kid1”]
到[“sky2”,“kid1”]
将从后台删除sky1,添加sky2,并保留kid1,因为它在两个州都存在)。这是为了在各州之间保留动画计时,并尝试使过渡更轻(尽管我不确定是否需要)
但我不知道如何比较这样的数组内容
第二个问题可能要简单得多,但我缺乏使用Javascript的经验,老实说,我不知道我做错了什么。我无法针对我所在州的内容。这是我的init():
stage=newcreatejs.stage(“测试”);
当前状态=1;
terra1=newcreatejs.Bitmap(“terra1.png”);
terra2=新的createjs.Bitmap(“terra2.png”);
bullet1=新建createjs.Bitmap(“bullet1.png”);
bullet2=新建createjs.Bitmap(“bullet2.png”);
state1=[“terra1”];
state2=[“terra2”,“bullet1”];
状态3=[“terra2”,“bullet2”];
calcstate=“state”+当前状态;
//打电话给第一个州(至少这是我想要的)。
console.log(calcstate);
//这将返回“state1”。我希望它返回[“terra1”],因为这是
//国家的内容1。
对于(i=0;i
所以是的,现在我几乎被卡住了。有什么建议吗?您没有正确地引用实例
calcState
将是一个字符串(例如“state1”),而不是对变量state1
的引用。您可以使用括号访问来引用它:this[calcState]
// OR, depending on your scope
window[calcState]
terra1
。这里也可以使用括号访问,但更好的方法是将实例实际添加到状态数组中:state1 = [terra1];
state2 = [terra2, bullet1];
state3 = [terra2, bullet2];
我建议使用console.log()
来输出值calcState
,以及for循环中的calcState[I]
,这将有助于了解您所看到的内容
处理此问题的更简单方法是创建一个状态数组,该数组具有子元素:
states = [
[terra1],
[terra2, bullet1],
[terra2, bullet2]
];
// Refer to your states. Note that calcState should be 0-2 and not 1-3
states[calcState][i];
希望这能有所帮助。您没有正确引用实例
calcState
将是一个字符串(例如“state1”),而不是对变量state1
的引用。您可以使用括号访问来引用它:this[calcState]
// OR, depending on your scope
window[calcState]
terra1
。这里也可以使用括号访问,但更好的方法是将实例实际添加到状态数组中:state1 = [terra1];
state2 = [terra2, bullet1];
state3 = [terra2, bullet2];
我建议使用console.log()
来输出值calcState
,以及for循环中的calcState[I]
,这将有助于了解您所看到的内容
处理此问题的更简单方法是创建一个状态数组,该数组具有子元素:
states = [
[terra1],
[terra2, bullet1],
[terra2, bullet2]
];
// Refer to your states. Note that calcState should be 0-2 and not 1-3
states[calcState][i];
希望能有所帮助。谢谢,这肯定会有所帮助。我已经完成了调试,并对系统进行了一些增强(目标是能够在脚本开始时声明状态列表和源文件列表,并让函数自动处理所有其他内容)。我现在被困在第106~115行。我很确定我说的是错误的(上下文方面的),但我不确定搜索什么或在哪里,我真的很想完全解决这个问题,而不是使用不太灵活的混乱解决方法。。。。我刚刚有了一个妙不可言的时刻,尝试在第一个参数周围的Sprite创建函数中添加一个eval()。它现在工作得很好!再次感谢你的帮助!谢谢,这绝对有帮助。我已经完成了调试,并对系统进行了一些增强(目标是能够在脚本开始时声明状态列表和源文件列表,并让函数自动处理所有其他内容)。我现在被困在第106~115行。我很确定我说的是错误的(上下文方面的),但我不确定搜索什么或在哪里,我真的很想完全解决这个问题,而不是使用不太灵活的混乱解决方法。。。。我刚刚有了一个妙不可言的时刻,尝试在第一个参数周围的Sprite创建函数中添加一个eval()。它现在工作得很好!再次感谢你的帮助!