アプリ版:「スタンプのみでお礼する」機能のリリースについて

ActionScript3.0の記述が長い・・・


お世話になっています。

最近Flashを始めました初心者です。


現在FlashCS5である値を計算する計算機のようなFlashを制作しています。

・・・と、やりたいことは実現できましたので、
このことは質問と直接関係ないのですが。。


質問は、スクリプトのまとめ方(?)についてです。


というのも、初心者だけに知っていることしかできないので、
絶対に一緒に出来るだろうと言うような、同じような記述がたくさん出てきます。

それを配列や演算子を使用し、ソースをすっきりさせたいのです。


無理なものもあるかもしれませんが、
以下のまとめ方をお教えください。


-- (1) --

a.restrict = "0-9";
b.restrict = "0-9";
c.restrict = "0-9";
d.restrict = "0-9";
e.restrict = "0-9";


-- (2) --

var A:Number = Number(a.text);
var B:Number = Number(b.text);
var C:Number = Number(c.text);
var D:Number = Number(d.text);
var E:Number = Number(e.text);


-- (3) --

var A = B - 100
if(A < 0){
A = 0;
};

var C = A / B
if(C < 0){
C = 0;
};

var D = C * B
if(D < 0){
D = 0;
}

if(D > 0){
D = Math.round(D);
};


-- (3) --

F.text = String(A);
G.text = String(B);
H.text = String(C);
I.text = String(D);
J.text = String(E);


変数は適当に当てはめています。

お分かりになる方がいらっしゃいましたらご教授ください。


よろしくお願い致します。

A 回答 (2件)

失敗しました…



2のやり方はプリミティブな型の変数ではダメですね

ASでは数とか文字列なんかのプリミティブな型は
配列にいれても参照にならないので
こういうやり方で巡回しても
ダメなんでした、すいません

var A,B,C,D,E:Number
var varArr=["A","B","C","D","E"]
for(var i in varArr){
this[varArr[i]]=parseFloat([a,b,c,d,e][i].text)
}


ってことで3も同じようなカンジですね
    • good
    • 0
この回答へのお礼

何度もご回答ありがとうございました。

ですが、またエラーが出てしましました。

「Number のプロパティ text を作成できません。」
というエラーです。。。


今回は単純に「そのような記述法があるのかなぁ」と思いご質問させていただき
実装できていないというわけではないので、諦めます・・・

勉強して出直してきます。


H240S18B73様
どうしようもないようなご質問に何度もお付き合いいただきましてありがとうございました!

お礼日時:2010/06/24 16:37

(1)



for each(var item in [a,b,c,d,e]){
item.restrict="0-9"
}

(2)

var A,B,C,D,E:Number
for(var i in [A,B,C,D,E]){
[A,B,C,D.E][i]=Number([a,b,c,d,e][i].text)
}

(3)a

何がしたいかよくわかりません
ほしいのはDだけなので
ACを作らずにすむ方法が知りたいってことですか?

とするとCの所のくだりって必要ない気がするんですが…
(Cが負になるのはAかBのどちらか片方が負ってことだけど
Aはまず負にならないようにされてるし
Bが負ならAは0になるからA/Bも当然0になる)
むしろBが0だったりしたらエラーになって邪魔

なので結局 D=A/B*B で D=A


var D=Math.round(Math.max(B-100,0))


こういうことではなく?


(3)b

2と同じ

この回答への補足

ご回答ありがとうございます。


(1)は出来ました。
ありがとうございます。


(2)、(3)b(間違えて(3)が2つありました。。)はエラーになってしまいます・・・

「シンタックスエラー:identifierがassignの前に必要です。」
「メタデータ属性が複数のエレメントを持つことはできません。」

と出てきてしまいます。

恥ずかしながらこのエラーの意味もよくわかっていないので、
ご教授お願い致します。


(3)a は、
「A < 0」「B < 0」「D < 0」の時に「A = 0」「B = 0」「D = 0」
という記述を一緒に出来ないかという意味でした。

絡んでくる実際の変数はABCDEの5つではなく、
必ずしもH240S18B73様の仰っていた結果にならないのです。


お手数をお掛け致しますが、よろしくお願い致します。

補足日時:2010/06/21 13:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!