[Edge]。→、、
Web アニメーション Animation の置換状態を文字列で返します。
mdn: これは、アニメーションが削除された場合にアクティブになります。または Animation.persist() が呼び出された場合は永続化されます。
Animation | Animation |
---|
アニメーションの置換状態を表す文字列。値は次のいずれかです:
active | アニメーションの置換状態の初期値。アニメーションがブラウザーの自動的に塗りつぶしアニメーションを削除する動作によって削除された場合。 |
---|---|
persisted | アニメーションは、Animation.persist() を呼び出して明示的に永続化されています。 |
removed | アニメーションは明示的に削除されました。 |
HTML:
<DIV id=IdTest style="width:1em">■</DIV> <BUTTON id=IdPlay>再生</BUTTON><BR> <BUTTON id=IdSet1>違うアニメーション設定1、play()</BUTTON> <BUTTON id=IdSet2>違うアニメーション設定2、play()</BUTTON> <BR> <SPAN id=IdLog></SPAN>
JavaScript:
KE=new KeyframeEffect( //アニメーション データの作成: IdTest, [ //ターゲット。 {transform:'translateX(150px)'} //X軸移動。 ] , {duration:1000, fill:'forwards'} //10秒掛けて、?。 ); function JobDel(){ //remove イベントの処理: D=Ani; //=[object]:[object Animation]。メイン動作をしてから、新しい動作をさせて動作が終わった所。} Ani=new Animation(KE, document.timeline); //アニメーション作成。 //Ani.persist(); Ani.onremove=JobDel; //アニメーションが削除されたら…イベント割り当て。 function JobPlay(){ //再生の処理: Ani.play(); } function JobSet1(){ //新しいアニメーション1の処理: KE=new KeyframeEffect( //アニメーション データの作成: IdTest, [ //ターゲット。 {transform:'translateX(200px)'} //X軸移動。 ] , {duration:1000, fill:'forwards'} //掛かる時間、?。 ); Ani=new Animation(KE, document.timeline); //アニメーション作成。 Ani.onremove=JobDel; //アニメーションが削除されたら…イベント割り当て。 Ani.play(); //再生。 } function JobSet2(){ KE=new KeyframeEffect( //アニメーション データの作成: IdTest, [ //ターゲット。 {transform:'translateX(100px)'} //X軸移動。 ] , {duration:1000, fill:'forwards'} //掛かる時間、?。 ); Ani=new Animation(KE, document.timeline); //アニメーション作成。 Ani.onremove=JobDel; //アニメーションが削除されたら…イベント割り当て。 Ani.play(); //再生。 } IdPlay.onclick=JobPlay; //再生ボタンのイベント割り当て。 IdSet1.onclick=JobSet1; //新しいアニメーション1ボタンのイベント割り当て。 IdSet2.onclick=JobSet2; //新しいアニメーション2ボタンのイベント割り当て。 function Job(){ //タイマー監視処理: IdLog.innerHTML="replaceState:"+Ani.replaceState; //表示。 } setInterval(Job, 300); //タイマー監視。詳細
//effect=[object]:[object KeyframeEffect] //startTime=[number]:8259.59 //currentTime=[number]:1000 //playbackRate=[number]:1 //playState=[string]:finished //pending=[boolean]:false //id=[string]: //onfinish=[object]:null //oncancel=[object]:null //cancel=[function]:function cancel() { [native code] } //finish=[function]:function finish() { [native code] } //pause=[function]:function pause() { [native code] } //play=[function]:function play() { [native code] } //reverse=[function]:function reverse() { [native code] } //updatePlaybackRate=[function]:function updatePlaybackRate() { [native code] } //timeline=[object]:[object DocumentTimeline] //replaceState=[string]:active //…
remove イベントが発生するタイミング: 次の設定のアニメーション動作が終わった時に発生する。しかも remove イベントなのに replaceState が「active」になっている。
HTML:
<DIV id=IdTest style="width:1em">■</DIV> <BUTTON id=IdSet1>違うアニメーション設定1</BUTTON> <BUTTON id=IdSet2>違うアニメーション設定2</BUTTON> <BR> <SPAN id=IdLog></SPAN>
JavaScript:
function JobDel(){ //remove イベントの処理: IdLog.innerHTML="replaceState:"+Ani.replaceState; //表示 alert("replaceState:"+Ani.replaceState); //表示 } Ani=IdTest.animate({transform:'translateX(150px)'}, {duration:1000, fill:'forwards'}); Ani.onremove=JobDel; //イベント割り当て。 function JobSet1(){ Ani=IdTest.animate({transform:'translateX(100px)'}, {duration:1000, fill:'forwards'}); Ani.onremove=JobDel; } function JobSet2(){ Ani=IdTest.animate({transform:'translateX(200px)'}, {duration:1000, fill:'forwards'}); Ani.onremove=JobDel; } IdSet1.onclick=JobSet1; IdSet2.onclick=JobSet2; function Job(){ IdLog.innerHTML="replaceState:"+Ani.replaceState; } setInterval(Job, 300);