2011-06-24 2 views
0

私は関数に引数を渡すことでより快適にしようとしているAS3のnoobです。私は2つのAS3ファイルにコードを分割するとき、誰かが、しかし...次のコードは、それが動作し、紫色の四角形を描画の下に見られるように、すべて1つのAS3ファイル内にあるときに私はなぜ理解別のAS3ファイルにある関数に引数を渡すことについてのNoobの質問

package{ 
import flash.display.*; 
public class Main extends Sprite{ 
     public function Main(){ 

    var square_commands:Vector.<int> = new Vector.<int>(5,true); 

square_commands[0] = 1;//moveTo 
square_commands[1] = 2;//lineTo 
square_commands[2] = 2; 
square_commands[3] = 2; 
square_commands[4] = 2; 

var square_coord:Vector.<Number> = new Vector.<Number>(10,true); 
square_coord[0] = 20; //x 
square_coord[1] = 10; //y 
square_coord[2] = 50; 
square_coord[3] = 10; 
square_coord[4] = 50; 
square_coord[5] = 40; 
square_coord[6] = 20; 
square_coord[7] = 40; 
square_coord[8] = 20; 
square_coord[9] = 10; 

Fill(square_commands, square_coord); 
} 
public function Fill(a:Vector.<int>,b:Vector.<Number>){ 
import flash.display.*; 
    graphics.beginFill(0x442266);//set the color 
    graphics.drawPath(a, b); 
} 
} 
} 

を助けてくださいと

package{ 
import flash.display.*; 
public class Main extends Sprite{ 
     public function Main(){ 

    var square_commands:Vector.<int> = new Vector.<int>(5,true); 

square_commands[0] = 1;//moveTo 
square_commands[1] = 2;//lineTo 
square_commands[2] = 2; 
square_commands[3] = 2; 
square_commands[4] = 2; 

var square_coord:Vector.<Number> = new Vector.<Number>(10,true); 
square_coord[0] = 20; //x 
square_coord[1] = 10; //y 
square_coord[2] = 50; 
square_coord[3] = 10; 
square_coord[4] = 50; 
square_coord[5] = 40; 
square_coord[6] = 20; 
square_coord[7] = 40; 
square_coord[8] = 20; 
square_coord[9] = 10; 

Fill(square_commands, square_coord); 
} 
} 
} 

と...

package{ 
import flash.display.*; 
public class Fill extends Sprite{ 
public function Fill(a:Vector.<int>,b:Vector.<Number>){ 
    graphics.beginFill(0x442266);//set the color 
    graphics.drawPath(a, b); 
} 
} 
} 

のFlash CS5は私にそれが唯一の1 argumeを期待していたというエラーメッセージ1137を与える...次のように関数に引数を渡すためにしてみてくださいコード行のnt - > Fill(square_commands、square_coord);

誰かが、2番目のAS3ファイルの関数square_commandsとsquare_coordをどのように渡す必要があるか説明してください。

事前にすべてのヘルプをありがとうございます!

答えて

0
// main.as 
package{ 
    // good practice is to declare all imports in one spot and at the top of the class. 
    import flash.display.*; 
    public class Main extends Sprite{ 
    public function Main(){ 
     var square_commands:Vector.<int> = new Vector.<int>(5,true); 
      square_commands[0] = 1;//moveTo 
      square_commands[1] = 2;//lineTo 
      square_commands[2] = 2; 
      square_commands[3] = 2; 
      square_commands[4] = 2; 

     var square_coord:Vector.<Number> = new Vector.<Number>(10,true); 
      square_coord[0] = 20; //x 
      square_coord[1] = 10; //y 
      square_coord[2] = 50; 
      square_coord[3] = 10; 
      square_coord[4] = 50; 
      square_coord[5] = 40; 
      square_coord[6] = 20; 
      square_coord[7] = 40; 
      square_coord[8] = 20; 
      square_coord[9] = 10; 


     // notice we are passing the parameters to the constructor of the Fill class 
     var fill = new Fill(square_commands, square_coord); 
    } 
    } 
} 



// Fill.as 
package{ 
    import flash.display.*; 
    public class Fill extends Sprite{ 

    // A function with the same name of the class file is the constructor. 
    // A constructor will be called every time the new operator is called like I did in main. 
    public function Fill(a:Vector.<int>,b:Vector.<Number>){ 
     graphics.beginFill(0x442266);//set the color 
     graphics.drawPath(a, b); 
    } 
    } 
} 

I suggest you read up on OOP and learn it if you are going to do lots of coding.

0

別のFillクラスを作成する必要はありません。メインファイルと同じパッケージにある別のファイル内にFill関数のみを作成する必要があります。 だからあなたFill.asファイルは次のようになります。

// ActionScript file 
package{ 
    import flash.display.Sprite; 
    public function Fill(target:Sprite, a:Vector.<int>,b:Vector.<Number>):void{ 
     target.graphics.beginFill(0x442266);//set the color 
     target.graphics.drawPath(a, b); 
     } 
} 

言及矩形が描画されるべきスプライトを提供する追加パラメータターゲット。

関数呼び出しが見えるかもしれません:

Fill(this, square_commands, square_coord); 
関連する問題