Flash 如何执行与gotoAndPlay()和stop()等价的createJS
以下是场景: 我正在创建一个信息图形交互动画,它允许用户虚拟设置一个三脚架,与一个虚拟摄像机交互,等等。当一个箭头指向用户应该单击的位置时,我需要时间线停止。然后,单击三脚架(一个movieClip)时,时间轴应恢复播放(三脚架也会设置动画,然后视图切换到使用相机的第一人称)。目前,动画只会永远播放,不会停止任何操作以允许用户交互。以下是我到目前为止的createJS代码:Flash 如何执行与gotoAndPlay()和stop()等价的createJS,flash,createjs,easeljs,Flash,Createjs,Easeljs,以下是场景: 我正在创建一个信息图形交互动画,它允许用户虚拟设置一个三脚架,与一个虚拟摄像机交互,等等。当一个箭头指向用户应该单击的位置时,我需要时间线停止。然后,单击三脚架(一个movieClip)时,时间轴应恢复播放(三脚架也会设置动画,然后视图切换到使用相机的第一人称)。目前,动画只会永远播放,不会停止任何操作以允许用户交互。以下是我到目前为止的createJS代码: <!DOCTYPE html> <html> <head>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CreateJS export from birdsofprey-anim9c</title>
<script src="http://code.createjs.com/easeljs-0.6.0.min.js"></script>
<script src="http://code.createjs.com/tweenjs-0.4.0.min.js"></script>
<script src="http://code.createjs.com/movieclip-0.6.0.min.js"></script>
<script src="http://code.createjs.com/preloadjs-0.3.0.min.js"></script>
<script src="birdsofprey-anim9c.js"></script>
<script>
var canvas, stage, exportRoot;
function init() {
canvas = document.getElementById("canvas");
images = images||{};
var manifest = [
{src:"images/Bitmap1.png", id:"Bitmap1"},
{src:"images/Bitmap2.png", id:"Bitmap2"},
{src:"images/Scene_1.jpg", id:"Scene_1"}
];
var loader = new createjs.LoadQueue(false);
loader.addEventListener("fileload", handleFileLoad);
loader.addEventListener("complete", handleComplete);
loader.loadManifest(manifest);
}
function handleFileLoad(evt) {
if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
}
function handleComplete() {
exportRoot = new lib.birdsofpreyanim11a();
stage = new createjs.Stage(canvas);
stage.addChild(exportRoot);
tripodleg = new lib.LEFT_LEG_MC;
stage.addChild(tripodleg);
stage.update();
createjs.Ticker.setFPS(24);
createjs.Ticker.addEventListener("tick",f);
function f(e){
//var t=this;
//t.stop();
//exportRoot.stop();
var delay = 4000;
var startTime=createjs.Ticker.getTime();
createjs.Ticker.getMeasuredFPS();
if(createjs.Ticker.getMeasuredFPS == 6){
exportRoot.stop();
tripodleg.onclick = function(){
exportRoot.gotoAndPlay(90);
}
//exportRoot.gotoAndPlay(90);
createjs.Ticker.removeEventListener("tick",f);
}
}
createjs.Ticker.addEventListener("tick", stage);
}
</script>
</head>
<body onload="init();" style="background-color:#D4D4D4">
<canvas id="canvas" width="550" height="540" style="background-
color:#ffffff"></canvas>
</body>
</html>
CreateJS从birdsofprey-anim9c导出
var画布、stage、exportRoot;
函数init(){
canvas=document.getElementById(“canvas”);
图像=图像| |{};
变量清单=[
{src:“images/Bitmap1.png”,id:“Bitmap1”},
{src:“images/Bitmap2.png”,id:“Bitmap2”},
{src:“images/Scene_1.jpg”,id:“Scene_1”}
];
var loader=new createjs.LoadQueue(false);
loader.addEventListener(“文件加载”,handleFileLoad);
加载器。添加事件列表器(“完成”,handleComplete);
loader.loadManifest(清单);
}
功能手柄文件负载(evt){
如果(evt.item.type==“image”){images[evt.item.id]=evt.result;}
}
函数handleComplete(){
exportRoot=new lib.birdsofpreyanim11a();
stage=newcreatejs.stage(画布);
stage.addChild(exportRoot);
tripodleg=新的库左腿MC;
阶段。addChild(三脚架);
stage.update();
createjs.Ticker.setFPS(24);
createjs.Ticker.addEventListener(“勾号”,f);
函数f(e){
//var t=这个;
//t、 停止();
//exportRoot.stop();
var延迟=4000;
var startTime=createjs.Ticker.getTime();
createjs.Ticker.getMeasuredFPS();
如果(createjs.Ticker.getMeasuredFPS==6){
exportRoot.stop();
tripodleg.onclick=函数(){
exportRoot.gotoAndPlay(90);
}
//exportRoot.gotoAndPlay(90);
createjs.Ticker.removeEventListener(“勾选”,f);
}
}
createjs.Ticker.addEventListener(“勾号”,阶段);
}
提前感谢StackOverflow,感谢他们所属的超级程序员的专业知识-qs
[EDIT]这次再次更新了我的代码,通过addChild()将我的tripod MovieClip的一个实例添加到舞台上并通过exportRoot.stop()停止时间线exportRoot没有停止,有什么线索吗?提前谢谢。我猜你是在说台词:
function handlClick(){
mc.play(2);
}
如果是这样,只需使用gotoAndPlay(2)
而不是play
。EaselJS最初是基于ActionScript语言的,所以它反映了很多功能。看看这本书
需要注意的一点是:在handlTick
方法中,什么是createjs.Ticker.tick
?没有勾号属性,只有“勾号”事件。其中的if语句将永远不会为true
。你到底想用这些代码做什么?您是否希望在主剪辑到达第30帧时添加单击处理程序?还是在30“滴答”之后?不管怎样,这都不会起作用
希望有帮助
[根据更新进行编辑]
看起来您已将其更改为使用gotoAndPlay
,但存在一些问题:
您正在调用一个全局gotoAndPlay
函数(该函数不存在),而不是以MovieClip实例为目标。如果您的主时间线有您想要进入的框架,请使用exportRoot.gotoAndPlay(90)代码>
接下来,您将调用this.stop()
。您的事件侦听器是匿名的(这很好),但这意味着此
是窗口
。同样,没有全局的stop
方法——因此您应该在希望停止的时间线上调用它。在本例中,可能是exportRoot.stop()
干杯,您提到:“没有滴答属性,只有一个“滴答”事件。”是的,这也是我所怀疑的,谢谢更新。您说:“您正在寻找在主剪辑达到30时添加的点击处理程序吗?”…没错。我希望整个时间线停在第30帧,而不是时间线上的MC。我看了一下Ticker.setPause(true)的例子,但它只是让我头晕目眩。也许可以为FPS设置一个var,告诉Ticker同步到时间线的帧速率,对吗?谢谢你告诉我这些错误,请让我知道如何停止();我试图在第30帧创建的动作。再次感谢您的帮助,万分感谢-它仍然没有停止。有什么建议吗?谢谢,-上面的答案。这听起来是个不错的解决办法。我更改了createJS.HTML文件中的代码。现在它只是停下来,停下来后点击什么也不做。你知道exportRoot文档的链接吗?在这里我可以看到它的所有相关方法的列表?再次感谢你,兰尼-qs
function handlClick(){
mc.gotoAndPlay(2);
}