• 締切済み

【ActionScript】クラス化のメリットは?

Flash CS3 使用者です。 あまりに基本的な質問で申し訳ありません。 ちょっとぐぐったのですが意外といい回答が見つからず質問させていただきます。 関数(function)とクラス(class)は用途が似ていますがレベルが高い人ほどクラスで処理している(ような気がする)のはなぜでしょう。 1)クラスにできて関数にできないことは何か。 2)クラス化しておかないとどういうとき困るか。 このへんを中心に解説していただくと助かります。 よろしくお願いいたします。

みんなの回答

  • cspl
  • ベストアンサー率83% (55/66)
回答No.1

まず、クラスとは関数(メソッド)と属性(プロパティ)をひとまとめにして部品化したものなので、関数とクラスは用途が似ている、という解釈が少し違和感があります。 ムービークリップごとに関数や変数を書く人がいますが(5~6年前まではみんなそうやっていましたが)、そのムービークリップごとに書いた変数と関数をひとかたまりにまとめたものがクラスになる、と考えた方が近いでしょう。ですので、flaに書く場合とクラスを使用する場合、ということで比較した方がよいです。 ありきたりの回答になりますが、制作する上での主なメリットは下記のような点にあります。 ・複数人数での開発に有効。 ・全体の構造が把握しやすい。(flaにムービークリップ単位で書いてしまうと、基本的に書いた人間にしか構造が理解できない。) ・よく使用するものは使い回しが可能。継承などはクラスにしかできないです。 ・開発速度が上がる。(ムービークリップやフレームのあちこちに書いていたり、1フレームに延々と書かれているものよりも、クラスごとに分けて書かれているものの方がエディタを使用する場合、移動や検索がしやすいです。) これらはFlash開発に限らず、他の言語でも同じことなので、「クラス メリット」などで検索すれば出てきます。ただ、実際に使用してクラスの恩恵を感じるようになるには、それなりの設計力や実装力が必要とされますす。他の人が作ったファイルを参考にしながら、何度も繰り返し失敗を重ねていくうちに、自然とクラスで書くメリットは理解できるようになると思います。 逆に、複雑な遷移を伴わず、思いつきで作るような簡単なものはクラスを使用せずにそのままflaのフレームに書いてしまえばいいと思います。 未だにonClipEventを使ってムービークリップに直接書いている人は業務レベルでは間違いなく淘汰されていきますが、何を作るにもクラスを使った方が絶対いい、ということはないです。

takosuke88
質問者

お礼

複数人数で有利なのですか。 なろほどありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • actionscript2のクラスの中の書き方について

    Flash ActionScript2のクラスの中の書き方について悩んでいます。 クラスの中にMcを定義するものですがthis.mct.onPressのところで class testAの中の_move()が実行できません。いろいろ試してみました がうまく実行できませんでした。なにかいいやり方はないでしょうか? よろしくお願いします。 class testA{  var mct:MovieClip;  function testA(mct:MovieClip){   this.mct = mct;   this.mct.onPress = function(){    _parent._move();   }  }  function _move(){    this.mct.onEnterFrame = function(){   }  } }

    • ベストアンサー
    • Flash
  • 戻り値がクラスオブジェクト

    VB初心者でわからないので教えてください。 ある関数を呼び出して戻り値を取得するのですが、その戻り値がクラスオブジェクトとなっています。いろいろ調べてみましたが、いい結果にヒットしなかったので今回質問してみました。 言語はVB6.0です Function 関数A(A as String, B as String) dim C as Class1 set C = new Class1 Class1で宣言された変数に値を入れる処理     関数A = C end Function イメージはこんな感じです。 すみませんが解決策を教えてください。。。。

  • actionscriptのfunction関数について

    現在Flashの勉強をしている者です。 超初心者丸出しの質問なのですが調べても納得いく回答にめぐりあわなかったのでここで質問させていただきます(前回もPHPについて質問したら素晴らしい回答があったので!!) Function関数なのですが function 半角英字で任意の文字 () {  以下実行文 } でユーザー定義関数が作られるのはわかったのですが、 本を読みながら勉強をしていてわからないのが this.onRollOver = function () { roll = true; this.nextFrame(); }; という記述で、『マウスがムービークリップ上にあるかの判定処理』という説明がされているのですが恥ずかしながらよくわかりません。 ユーザー定義関数のFunctionと上記のものでは別物なのでしょうか? ちょっと曖昧な質問で申し訳ないのですが どなたが是非よろしくお願いします。。。

    • ベストアンサー
    • Flash
  • 関数内のクラス定義について

    function func_name() { --- snip --- class class_name { --- snip --- } --- snip --- } のように関数内でクラスを定義した例を見たのですが、関数外でクラスを定義した場合とどこが違うのでしょうか? またどのような意味があるのでしょうか? PHPでは関数内に子関数を定義すると子関数もグローバルになって二重定義エラーになるためこのようなことは出来ないと認識しているのですが、関数内でのクラス定義でこのようなことは起こりませんか。 またclass class_nameはグローバルなスコープを持たないのでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • php クラス

    クラスの勉強をしているのですが、 記憶寿命をfunctionの中で完結させsample2以降でも同じ変数などを使えるようにするため定義済み関数内でクラスを処理したいのですが下記のエラーが出てしまいます。 functionの中でクラスを簡潔させるにはどのようにすればよいでしょうか?また、これはなぜエラーが起きているのでしょうか? function sample1(){ $pr=new parson; $pr->name="鈴木"; $pr->age=56; print $pr->getname(); print $pr->getage(); class parson { public $name="鈴木"; public $age=56; function getname(){return $this->name;} function getage(){return $this->age;} }} sample1(); Fatal error: Uncaught Error: Class 'parson' not found in hoge/class.php:11 Stack trace: #0 /hoge/class.php(27): sample1() #1 {main} thrown in /hoge/class.php on line 11

    • ベストアンサー
    • PHP
  • 【PHP】クラス と 関数 の違い

    class と function って具体的にはどうちがうのでしょうか。 class のメンバ変数は、 function でいうと 引数みたいな感じだし メンバ関数(メソッド?)も、function でいうと 実際の処理みたいな印象をうけます。 コンストラクターというのも、絶対的な処理 みたいな感じですが 何に使うのかよく分かりません。 class では、CSSのカスケードみたいに処理を別のclassに引き継ぎできるみたいですが、 他にどんな違いがあるのでしょうか。

    • ベストアンサー
    • PHP
  • ActionScript3.0

    as3.0初心者です。 関数の引数の初期値を設定したいのですが、Array型の時だけ、 コンパイル時にエラーが発生してしまいます。 public function hoge(args:Array = []):void { // 処理 } 未熟な者の質問で申し訳ないのですが、分かる方はよろしくお願いします。

    • ベストアンサー
    • Flash
  • 実体化したクラスを関数の引数にするには

    タイトルの通りです。 実体化したクラスを関数の引数として渡し、 関数の中でクラスのメソッドを実行したいと思っています。 以下のソースではエラーが出るのですが、 お分かりの方はいらっしゃいますでしょうか? $o_hoge = new Class_hoge(); fncHoge = ($o_hoge); function fncHoge($class) {  $class->hoge('test'); } class Class_hoge {  public function hoge($a)  {   print $a;  } }

    • ベストアンサー
    • PHP
  • クラスについて

    クラスについてご教示下さい。 ------------------------------ main.php ------------------------------ <?php include("./a.php"); include("./b.php"); ・ ・ ・ $a_class = new a; $b_class = new b; $b_class->view_sum; ・ ・ ・ ?> ------------------------------ a.php ------------------------------ <?php class a { VAR $int1 = 10; VAR $int2 = 5; function exec_sum(){ $int_sum = $int1 + $int2; return $int_sum } function XXXXXX(){ ・ ・ ・ } } ?> ------------------------------ b.php ------------------------------ <?php class b { function view_sum(){ ※クラスaのexec_sumを呼び出した結果を表示したい。 print ○○○; } function YYYYYY(){ ・ ・ ・ } } ?> ------------------------------------ として結果として15を表示したいと思っております。 ※あくまでの上記動作の可否を知りたいため、ロジックの構成については仕方なくです。。。すみません。 クラスを宣言するmain.phpではすでにclass_a, class_bで宣言していることが前提となります。 この場合、class_bから、class_aのfunctionを呼び出すにはどうすればよいのでしょうか? そもそも呼び出せるのでしょうか? お忙しいところ申し訳ありませんが、ご教示お願いいたします。

    • ベストアンサー
    • PHP
  • クラスの使い方

    php5です。 --- test1.class.php --- class TEST1 { function hoge1() { // 実際に複雑な処理ですが概要として簡易化してます $aaa = 'hoge1'; // クラスの実行で単純に戻り値を返す return $aaa; } } --- test2.class.php --- class TEST2 { function hoge2() { // 実際に複雑な処理ですが概要として簡易化してます $bbb = 'hoge2'; // クラスの実行で単純に戻り値を返す return $bbb; } } --- MySmarty.class.php --- require_once 'test1.class.php'; require_once 'test2.class.php'; class MySmarty extends Smarty { function MySmarty() { //ここでclassTEST1,2の戻り値を利用しif文で分岐をしたい if ($aaa == 'hoge1') { $ccc = 'あああ'; } elee { $ccc = 'いいい'; } if ($bbb == 'hoge2') { $ddd = 'ううう'; } elee { $ddd = 'えええ'; } $this->assign('aaa', $aaa); $this->assign('bbb', $bbb); ・・・ } } このような使い方はできないものでしょうか?クラスに触れてまだ間も無く理解も深めれて いない状態で参考サイトなどを調べてみたのですがこのような使い方を書いている説明は みつかりませんでした。 思いつく方法としてはMySmartyに継承すればいいようなのですが継承は1つまでと 制限があるようでそれもできない状態です。 単純に1つのクラスにまとめて書けば済むような気もあるのですが他にも別のクラスの 戻り値を利用して分岐等をさせたく思っているのですがこの場合どうすればいいのでしょうか? もし不可能な場合(可能だけど方法的に良くない場合)の別の方法としてアドバイスを 頂けますと幸いです!宜しくお願いします!

    • 締切済み
    • PHP
このQ&Aのポイント
  • MFC-J837DNでインクを検知できませんと表示されるトラブルについて相談します。
  • インクカートリッジを新しく交換しても、MFC-J837DNでインクを検知できませんと表示される問題が発生しています。
  • お使いの環境はWindows10で無線LAN接続です。関連するソフトやアプリはありません。電話回線はひかり回線です。
回答を見る