Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EaselJS turbomedia通过曝光表实现可逆性_Javascript_Arrays_Createjs_Easeljs - Fatal编程技术网

Javascript EaselJS turbomedia通过曝光表实现可逆性

Javascript EaselJS turbomedia通过曝光表实现可逆性,javascript,arrays,createjs,easeljs,Javascript,Arrays,Createjs,Easeljs,所以,我最近发现了EaselJS(以及更普遍的CreateJS),我正试图找到一种利用它制作turbomedia(ie)的方法 目前,我正在研究可逆性。turbomedia通过一系列状态/帧讲述其故事,一个关键特性是能够在这些帧之间随意来回移动(通常通过击键)。为了实现这种可逆性,我需要状态独立于以前的事件(即状态2必须是相同的,无论它是从状态1还是状态3到达的) 直到最近,我还只是处理单个位图(这样每个状态都对应于一个现有文件),所以问题永远不会出现。然而,现在我想让状态由多个图像组成(因为这

所以,我最近发现了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]
    
  • 即使您正确引用了state数组,它们本身也只包含字符串,因此您将在stage中添加“terra1”,而不是实例
    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]
    
  • 即使您正确引用了state数组,它们本身也只包含字符串,因此您将在stage中添加“terra1”,而不是实例
    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()。它现在工作得很好!再次感谢你的帮助!