メイン ActionScript 3.0 特設会議室 構造体の初期化パラメータ | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
flamming | Åê¹ÆNo.46445 投稿日時: 2010-11-27 12:55 |
新米 居住地: 投稿: 27
使用環境:
Win7 Flash CS5.5 Flash Develop <p6370jp> Core i5モデル(AX692AA-AAAA) オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1 プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー (3.2GHz、TB時... |
構造体の初期化パラメータ 下記のように、ID名および各パラメータにてインスタンスを生成するfunctionを作りました。
ですが、colについて引数の初期パラメータの設定ができませんでした。(コンパイルが通りません) if(col == null)col = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0);の1行を書かなくても済むよう、 col:ColorTransform = null の部分に初期化パラメータをつける方法はありますでしょうか? public function AttMC(id:String, _x:Number, _y:Number, _xscl:Number = 1, _yscl:Number = 1, col:ColorTransform = null) :MovieClip { if(col == null)col = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0); var cls:Class = getDefinitionByName(id) as Class; var mc = new cls(); mc.x = _x; mc.y = _y; mc.scaleX = _xscl; mc.scaleY = _yscl; mc.transform.colorTransform = col; return mc; } |
野中文雄 | Åê¹ÆNo.46446 投稿日時: 2010-11-27 13:45 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 構造体の初期化パラメータ まず、スクリプトには、必ず処理内容のご説明をお書添えください。もしかすると、他の部分は疑問とは関係ないから、説明は不要と思われたのかもしれません。でしたら無精をせず、関係ない部分は除いたスクリプトをお示しください。→【スクリプトを見てください】
ご質問の意味はよくわかりませんが、つぎのような関数定義をしたいということでしたら、できません。
引用: flammingさんは書きました: |
flamming | Åê¹ÆNo.46447 投稿日時: 2010-11-27 15:05 |
新米 居住地: 投稿: 27
使用環境:
Win7 Flash CS5.5 Flash Develop <p6370jp> Core i5モデル(AX692AA-AAAA) オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1 プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー (3.2GHz、TB時... |
Re: 構造体の初期化パラメータ 構造体を初期化パラメータに設定することは出来ないんですね。
思っていた通りの回答をいただくことができました。 newを用いず、[]や{}だけでも無理ということでよろしいでしょうか? 無精をしてしまい、申し訳ありませんでした。 今後は要点を絞ったスクリプト、説明を意識します。 番外編もすごくためになりました。 ご勧告、ご回答、ありがとうございました。 |
ひろゆき | Åê¹ÆNo.46448 投稿日時: 2010-11-27 15:08 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: 構造体の初期化パラメータ 引用:
flammingさんは書きました: なぜ、この1行を回避したいのか、その目的などを記された方が良いように思いますが。 if文を嫌ってのことであれば、こんな方法もありますね。
|
ひろゆき | Åê¹ÆNo.46449 投稿日時: 2010-11-27 15:15 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: 構造体の初期化パラメータ 引用:
flammingさんは書きました: 試してみれば、済むことでは?
|
野中文雄 | Åê¹ÆNo.46451 投稿日時: 2010-11-27 18:15 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 構造体の初期化パラメータ スクリプトを書くときも、妙な手抜きを考えるより、理屈で理解されるよう努めた方がよさそうに思います。
[1]「[]や{}」を記述してつくられるインスタンスのデータ型は何ですか。それが、ColorTransform型の引数に設定できるとしたら、文法として正しい結果といえますか。 [2]あるいは、Array([])やObject({})のように、ColorTransformクラスにもインスタンスを生成する特別な演算子(括弧)がないかということでしょうか。 だとすると、すべてのクラスがそれぞれに特別な演算子(括弧)をもっていると想像されたのですか。ラテン文字に、それほどまで括弧の種類が豊富とは思えませんが。 [3]もしかすると、つぎのような感じでColorTransformインスタンスの生成ができるのではないかと想像されたのでしょうか。
個人的には、あまり好ましいとは感じられません。
[4]現在の仕様の方が、より確実な処理もできます。
引用: flammingさんは書きました: |
flamming | Åê¹ÆNo.46459 投稿日時: 2010-11-28 10:56 |
新米 居住地: 投稿: 27
使用環境:
Win7 Flash CS5.5 Flash Develop <p6370jp> Core i5モデル(AX692AA-AAAA) オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1 プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー (3.2GHz、TB時... |
Re: 構造体の初期化パラメータ ひろゆき様
他の要素は初期化パラメータによって初期化されているのに、構造体だけは出来ないのかという疑問からくるものでした。 もちろん、[]や{}、特に{}に対してはそれぞれ「{redMultiplier:0…(略)}」というように記述して試してみました。 できませんでしが…。 ||論理和などがあるんですね。三項演算子をよく使用するのでこちらも活用すればよりスマートに書くことができそうですね。 ぜひ使わせていただきます。 野中様 上記のとおりでございます。 加えて、AttMCというfunctionを高頻度で使用しており、 引数に毎度new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0)を記述することで ソースが長くなってしまうことを避けられればと思っていました。 ひろゆきさんの仰るようにデフォルトプロパティを設定しておけば済む話だったのですが、 引数の初期値に入れることばかりに固執して頭が回りませんでした。 >スクリプトを書くときも、妙な手抜きを考えるより、理屈で理解されるよう努めた方がよさそうに思います。 仰るとおりです。偶発で乗り切れたとしても後で困るだけです。 可読性およびステップ数削減のどちらを重視するかに悩まされていますが、プログラムにも個人の性格が現れると肝に銘じ、理解の下に丁寧なスクリプティングを心がけたいと思います。 お二人ともありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |