入力テキストを 8 倍することを含む Flash Actionscript 2 でアプリを作成しようとしています。6 つのテキスト ボックスがあります。半分は入力、半分は動的です。ユーザーが数字を 1 つに入力すると、対応するものの出力は元の量の 8 倍に変化するはずです。(ただし、中央のテキスト ボックスとそれに対応するテキスト ボックスは、互いに等しいままです。)
ユーザーが常にボタンを押す必要がないように、フレームの外側に「コントロール パネル」ムービークリップを配置しました。基本的には 2 つのフレームがあり、1 つには必要なタスクが含まれているため、基本的には 24 fps で 1 秒あたり 12 回実行されます。
これで、等しい中央のテキスト ボックスが正常に機能します。最初の中間のものを 6 に変更できます。2 番目は 6 になります。他の番号でも同じです。しかし、他の 2 セットのテキスト ボックス (8 倍になるもの) は、常に NaN として表示されます。
アプリの起動時に、すべての入力テキスト ボックスの値を 0 にします。不思議なことに、動的も 0 でした。入力テキスト ボックスを 2 から開始してみましたが、確かに動的なものは 16 でした。しかし、入力に触れた瞬間に NaN になりました。明らかに、これは問題が入力からの文字列にあることを意味します。
整数に変換する前に、入力の 1 つから文字列をトレースしてみました。3 を入力してトレースすると、予想どおり「3」ではなく、次のようになりました。
<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Verdana" SIZE="18" COLOR="#000000" LETTERSPACING="0" KERNING="0">3</FONT></P></TEXTFORMAT>
それが明らかに問題です。修正方法がわからないので、出力は「3」または数字が何であれ。
変数は次のとおりです。
• NTO_x = input that will be multiplied by 8
• NTO_y = input that will not be changed
• NTO_z = input that will be multiplied by 8
• OFN_x = output of NTO_x
• OFN_y = output of NTO_y
• OFN_z = output of NTO_z
コードは次のとおりです。
シーンのフレーム:
//Sets the textboxes to number-only
NTO_x.restrict = "0-9";
NTO_x = "0"
NTO_y.restrict = "0-9";
NTO_y = "0";
NTO_z.restrict = "0-9";
NTO_z = "0";`
「コントロール パネル」ムービークリップの 2 番目のフレーム:
//Multiplies x and z by 8
_root.OFN_x = Number(_root.NTO_x) * 8;
_root.OFN_y = _root.NTO_y;
_root.OFN_z = Number(_root.NTO_z) * 8;