私は、ランダムな単語がフェードインしてからスケールアウトする、渦巻く催眠アニメーションをフラッシュで作成しようとしています。最初はタイマーでランダムに見えるモーショントゥイーンを使って設定しましたが、必然的にタイマーがアニメーションと同期しなくなり、アニメーションの途中で単語が切り替わってしまいました。
調査の結果、ENTER_FRAMEイベントを使用してActionscriptでコード化されたアニメーションをトリガーすることは、物事を適切に同期するための解決策のように思われました。ただし、可視性の変更と最初のフェードインのコーディングは簡単ですが、ステージ上で適切な位置合わせを維持しながらスケーリングすることは非常に困難であることが証明されています。
私の知る限り、stage.stageWidth(およびHeight)/2を使用する必要があります-インスタンスの幅/高さ/2を使用して、適切なx / y座標を設定し、インスタンスが再配置された後、ステージの中央にインスタンスを再配置します-インスタンスのscaleX/Yを調整してサイズを変更しますが、すべてがわずかにずれています。
私が使用している各インスタンスは、Flash Professional CS5.5でテキストオブジェクトとして開始され、以下のコードにリストされているインスタンス名でムービークリップオブジェクトに変換されています。
単語を選択して変更する初期関数
function runMany(event:Event):void {
if (cnt == 0) {
randomWord = Math.floor(Math.random() * 10);
scaling(randomWord, scale);
setAlpha(randomWord, alphaLevel);
visibility(randomWord, true);
cnt++;
} else if (cnt <= 50) {
alphaLevel = alphaLevel + .02;
setAlpha(randomWord, alphaLevel);
cnt++;
} else if (cnt < 97) {
alphaLevel = alphaLevel - .02;
scale = scale - .02;
scaling(randomWord, scale);
setAlpha(randomWord, alphaLevel);
if (scale > 0) {
cnt++;
} else {
cnt = 97;
}
} else if (cnt == 97) {
cnt = 0;
alphaLevel = 0;
scale = .8;
visibility(randomWord, false);
scaling(randomWord, scale);
setAlpha(randomWord, alphaLevel);
}
}
単語をスケーリングおよび整列する必要がある関数
function scaling(ref, setting):void {
if (ref == 0) {
if (setting == 1) {
watch.width = 515.50;
watch.height = 209;
} else {
watch.scaleX = setting;
watch.scaleY = setting;
}
watch.x = stage.stageWidth/2 - watch.width/2;
watch.y = stage.stageHeight/2 - watch.height/2;
}
if (ref == 1) {
if (setting == 1) {
slave.width = 552.55;
slave.height = 266.75;
}else {
slave.scaleX = setting;
slave.scaleY = setting;
}
slave.x = stage.stageWidth/2 - slave.width/2;
slave.y = stage.stageHeight/2 - slave.height/2;
}
if (ref == 2) {
if (setting == 1) {
letGo.width = 574.45;
letGo.height = 271;
} else {
letGo.scaleX = setting;
letGo.scaleY = setting;
}
letGo.x = stage.stageWidth/2 - letGo.width/2;
letGo.y = stage.stageHeight/2 - letGo.height/2;
}
if (ref == 3) {
if (setting == 1) {
obey.width = 536.95;
obey.height = 339.15;
} else {
obey.scaleX = setting;
obey.scaleY = setting;
}
obey.x = stage.stageWidth/2 - obey.width/2;
obey.y = stage.stageHeight/2 - obey.height/2;
}
if (ref == 4) {
if (setting == 1) {
dontThink.width = 629.60;
dontThink.height = 184.90
} else {
dontThink.scaleX = setting;
dontThink.scaleY = setting;
}
dontThink.x = stage.stageWidth/2 - dontThink.width/2;
dontThink.y = stage.stageHeight/2 - dontThink.height/2;
}
if (ref == 5) {
if (setting == 1) {
blank.width = 601.30;
blank.height = 195.85;
} else {
blank.scaleX = setting;
blank.scaleY = setting;
}
blank.x = stage.stageWidth/2 - blank.width/2;
blank.y = stage.stageHeight/2 - blank.height/2;
}
if (ref == 6) {
if (setting == 1) {
mindless.width = 800.20;
mindless.height = 187.25;
} else {
mindless.scaleX = setting;
mindless.scaleY = setting;
}
mindless.x = stage.stageWidth/2 - mindless.width/2;
mindless.y = stage.stageHeight/2 - mindless.height/2;
}
if (ref == 7) {
if (setting == 1) {
property1.width = 632.60;
property1.height = 326.85;
} else {
property1.scaleX = setting;
property1.scaleY = setting;
}
property1.x = stage.stageWidth/2 - property1.width/2;
property1.y = stage.stageHeight/2 - property1.height/2;
}
if (ref == 8) {
if (setting == 1) {
owned.width = 670.65;
owned.height = 209.75;
} else {
owned.scaleX = setting;
owned.scaleY = setting;
}
owned.x = stage.stageWidth/2 - owned.width/2;
owned.y = stage.stageHeight/2 - owned.height/2;
}
if (ref == 9) {
if (setting == 1) {
dontResist.width = 791.05;
dontResist.height = 142.45;
} else {
dontResist.scaleX = setting;
dontResist.scaleY = setting;
}
dontResist.x = stage.stageWidth/2 - dontResist.width/2;
dontResist.y = stage.stageHeight/2 - dontResist.height/2;
}
if (ref == 10) {
if (setting == 1) {
submit.width = 793.40;
submit.height = 244.35;
} else {
submit.scaleX = setting;
submit.scaleY = setting;
}
submit.x = stage.stageWidth/2 - submit.width/2;
submit.y = stage.stageHeight/2 - submit.height/2;
}
}