Flash初心者のためのセンセーショナルなタイトル

このQ&Aのポイント
  • Flash初心者のためのエラー解説と解決方法
  • Flash初心者が気にすべきエラー:1120:未定義のプロパティ_cubeへのアクセス
  • Flash初心者が抱えるエラーとその解決策を解説
回答を見る
  • ベストアンサー

Flash初心者です。

Flash初心者です。 以下のコードでは、1120:未定義のプロパティ_cubeへのアクセスです。というエラーが出ます。 ネットで調べてみたところ変数の定義がされていない時のエラーなのは分かったんですが、var _cube:Cube = new Cubeの部分では不足なのでしょうか?環境はFlashCS5です。 package { import flash.events.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.view.*; import org.papervision3d.materials.*; import org.papervision3d.materials.utils.*; public class Box extends BasicView { public function Box() { var material:WireframeMaterial = new WireframeMaterial(0x2288CC); var materials:MaterialsList = new MaterialsList({all:material}); var _cube:Cube = new Cube(materials,500,500,500); scene.addChild(_cube); startRendering(); addEventListener(Event.ENTER_FRAME, loop); } private function loop(e:Event):void { _cube.rotationY += 2; } } }

  • Flash
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
noname#120307
noname#120307
回答No.1

ソースを拝見したところ、_cube は、コンストラクタ内のローカル変数として定義されています。ですので、コンストラクタのブロックを抜けた loop メソッドからは参照出来ません。 _cube を Box クラスのインスタンス変数として定義すれば、参照することが可能になります。 デモ(インデントには日本語の空白が入っています) public class Test1 {  public function Test1() {   // コンストラクタ内のローカル変数として定義   var sprite:Sprite = new Sprite();   // エラーは起こらない   sprite.x = 100;  }  private function move() {   // エラー   sprite.x = 200;  } } public class Test2 {  // インスタンス変数として定義  private var sprite:Sprite = new Sprite();  public function Test2() {   // エラーは起こらない   sprite.x = 100;  }  private function move() {   // エラーは起こらない   sprite.x = 200;  } }

hydekick
質問者

お礼

返事が遅くなりました。 初歩的な質問にお答えいただき、ありがとうございました。 無事解決しました。

関連するQ&A

  • PV3Dでのアニメーション

    下記のソースですが、以下のような動きを追加したいと考えています。 ・直方体の側面(4方向共)に10数個の矢印を縦に並べる ・矢印の向きは直方体方向 ・矢印の先は円錐型ではなく、四角柱型もしくはarrowクラスの  ような形 ・カメラの初期位置を今の位置から更にx軸方向にもってくる  (初期画面で軸が三菱のマークに見えるようなイメージ) です。 問題なのが、arrowクラスの引数が色指定しかない為、任意の大きさに 指定して配置することができません。自分でシンボルを作って配置する しかないのでしょうか。 また、テキストのyがどうしてもyに見えないのですが解決方法はありますか? 以下にソースを貼りますので、ご教授ください。 import org.papervision3d.view.BasicView import org.papervision3d.objects.DisplayObject3D import org.papervision3d.objects.primitives.* import org.papervision3d.objects.special.VectorShape3D import org.papervision3d.materials.ColorMaterial import org.papervision3d.materials.utils.MaterialsList import org.papervision3d.materials.shadematerials.FlatShadeMaterial import org.papervision3d.materials.MovieMaterial import org.papervision3d.lights.PointLight3D var vw=new BasicView(1,1,true,false) var mtr:ColorMaterial = new ColorMaterial(0x000000); var mtr1:ColorMaterial = new ColorMaterial(0x33AA88); var light:PointLight3D=new PointLight3D(false) var shdMtr:FlatShadeMaterial=new FlatShadeMaterial(light,0xAAFFCC,0x338844) var mtrList:MaterialsList=new MaterialsList({all:shdMtr}) var cubeList=new Array() var vecList=new Array() var txtList=new Array() var drc:Number=0 var dst:Number=500 var rot:Number=0 var prevX:Number=mouseX for(var i=0;i<3;i++){ cubeList.push(new Cube(mtrList,60,60,200)) vw.scene.addChild(cubeList[i]) cubeList[i].x=150 cubeList[i].y=150 cubeList[i].z=150 vecList.push(new DisplayObject3D()) var cone=new Cone(mtr,10,30) var bar=new Cylinder(mtr,3,250) cone.y=250 bar.y=125 vecList[i].addChild(cone) vecList[i].addChild(bar) vecList[i][["rotationX","rotationY","rotationZ"][i]]=90 if(i==2)vecList[i].rotationZ=-90 vw.scene.addChild(vecList[i]) var movMtr=new MovieMaterial(makeTxtMov(["x","y","z"][i]),true,false,true) movMtr.oneSide=false txtList.push(new Plane(movMtr,50,50)) txtList[i][["x","y","z"][i]]=300 vw.scene.addChild(txtList[i]) } function makeTxtMov(str:String):MovieClip{ var rtn=new MovieClip() var fld=new TextField() var fmt=new TextFormat fmt.size=100 fmt.color=0x000000 fld.defaultTextFormat=fmt fld.text=str rtn.addChild(fld) return rtn } light.y=light.x=light.z=500 vw.camera.y=300 vw.startRendering() addChild(vw) vw.y=50 addEventListener(Event.ENTER_FRAME,frameTick) function frameTick(e){ drc+=rot rot*=0.98 for each(var txt in txtList)txt.rotationY=-drc*180/Math.PI-90 vw.camera.x=light.x=Math.cos(drc)*dst vw.camera.z=light.z=Math.sin(drc)*dst } stage.addEventListener(MouseEvent.MOUSE_DOWN,function(e){prevX=mouseX;stage.addEventListener(Event.ENTER_FRAME,setRot)}) stage.addEventListener(MouseEvent.MOUSE_UP,function(e){stage.removeEventListener(Event.ENTER_FRAME,setRot)}) function setRot(e){ rot=(prevX-mouseX)/300 prevX=mouseX } ※元ソースは頂き物です。

  • [as3]flashで外部phpの読み込み

    外部phpを読み込みechoで表示した値をFlash上のダイナミックテキストに表示させたいのですが、どうしても上手くいきません。 ■現状は以下のようになっています。 ・外部phpファイルにはechoにて、contents=******************** という出力結果がでます。 ・ダイナミックテキストを作りダイナミックテキスト名がname_strになっています。 ・as3のルートの1フレーム目に以下のようにasを書いています。 import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.events.Event; // [2] URLLoaderとURLRequestインスタンスの生成 var myLoader:URLLoader = new URLLoader(); var myRequest:URLRequest = new URLRequest("http://localhost.*******.php"); // [3] ロード完了時の処理をイベントリスナーに登録 myLoader.addEventListener(Event.COMPLETE, onComplete); // [4] 外部テキストファイルのロード実行 myLoader.load(myRequest); // [5] リスナー関数の定義 function onComplete (eventObject:Event) { var my_str:String = eventObject.target.data var myVars:URLVariables = new URLVariables(my_str); for (var name_str:String in myVars){ trace([name_str, myVars[name_str]]); } } ・環境はxamppにてローカルで作業をしています。 初心者でとんちんかんなことをしていまっているかもしれませんが、何卒よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS3.0 カスタムクラスのMCをMainで呼び出

    AS3.0 カスタムクラスのMCをMain.asで呼び出ししたいのですが、上手く機能しません。 どうして動かないのか具体的に教えてもらえると助かります。 エラー・コード:Main.as, Line 20 1180: Call to a possibly undefined method createBox. 【Main.as】 package{ import flash.display.*; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; import boxClass; public class Main extends Sprite{ //property private var item:boxClass; //constractor public function Main(){ box(); } //method public function box():void{ item=new boxClass(); item.createBox(this); } } } 【boxClass.as】 package{ import flash.display.*; import flash.events.Event; public class boxClass extends MovieClip{//boxクラス //property private var thisClass:Object; //constractor public function boxClass():void{} //method public function createBox(tm:MovieClip):void{ thisClass = this; trace("テスト"); var mc:boxMC=new boxMC(); thisClass.addChild(mc); } } }

  • FLASH,AS3.0 クリック後、xmlからファイルを取り出す方法

    as3.0初心者です。 恐れ入りますが、現在製作中のプログラミングに関することで教えていただきたいことがあります。 外部xmlより写真データを読み込み、ステージに並べるプログラムを作っています。参考書等のサンプルからステージに並べるまではわかったのですが、ボタン【インスタンス名:btn_a】をクリックした後に写真がステージに現れるようにアレンジしたいのですが…色々ためしてもエラーが出てしまいうまくいきません。どなたか教えていただけないでしょうか? 出来れば現在のプログラムをアレンジして使いたいと思っています。 初歩的な質問で申し訳ありませんがご教授いただけないでしょうか? ★xnlloader package { import flash.display.DisplayObjectContainer; import flash.system.System; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; public class PhotoXMLLoader { private var container:DisplayObjectContainer; private var xmlLoader:URLLoader; private var urlReq:URLRequest; //コンストラクタ public function PhotoXMLLoader(container:DisplayObjectContainer) { this.container=container; //URLLoaderのインスタンスを作る xmlLoader=new URLLoader(); //リスナーを登録する xmlLoader.addEventListener(Event.COMPLETE,onLoaded); //URLRequest urlReq=new URLRequest(); } //XMLファイルの読み込み public function loadXML(xmlurl:String,isUnicode:Boolean=true):void { //XMLファイルのURL urlReq.url=xmlurl; //unicodeでなければtrueに設定する System.useCodePage=! isUnicode; //読み込み開始 xmlLoader.load(urlReq); } //読み込み完了〜写真を並べる protected function onLoaded(eventObj:Event):void { //受信したxmlから値を取り出す var xmlObj:XML=new XML(xmlLoader.data); var photos:XMLList=xmlObj.photolist.photo; var w:int=290+10; var h:int=40+10; var row:int=1; for (var i:int=0; i<photos.length(); i++) { var photo:XML=photos[i]; //写真のURLを調べる var url:String="img/"+photo.@fname; //写真を読み込んで並べる var photoLoader:GoodLoader=new GoodLoader(url); photoLoader.x=w*(i%row); photoLoader.y=h*int(i/row)+200; ; container.addChild(photoLoader); } } } } ★goodloader package { import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import fl.transitions.Tween; import fl.transitions.easing.*; import flash.events.IOErrorEvent; public class GoodLoader extends Loader { var urlReq:URLRequest; var tw:Tween; public function GoodLoader(url:String) { //読み完了イベントのリスナーを登録する this.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); //IOエラーイベントのリスナーを登録する this.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); urlReq=new URLRequest(url); load(urlReq); } //読み込みエラーに対応する protected function onIOError(eventObj:IOErrorEvent):void { urlReq.url="image/io_error.jpg"; load(urlReq); } //フェードインで表示する protected function onLoaded(eventObj:Event):void { tw=new Tween(this,"alpha",Regular.easeInOut,0,1,1,true); } } }

    • ベストアンサー
    • Flash
  • Flash CS4体験版でpapervision3Dを試すがコンパイルエラーが出る

    AS3.0を勉強しようと思い、CS4の体験版をインストールしました。 Tweenerを試したりAS2.0との違いなど勉強しているところです。 今回困っているのはpapervision3Dでのコンパイルエラーです。 Public Beta 2.0 - Great White というバージョンをダウンロードし、 /ユーザー/classes/org/papervision3d に配置し、クラスパス設定しました。 環境はMac OS X です。 http://www.thinkit.co.jp/images/article/91/3/9131.zip 上記URLにてpapervision3Dのサンプルをダウンロードし、01Planeフォルダ内plane.flaをダブルクリックで開きムービーの書き出しをしたところ・・・ 1137: 引数の数が正しくありません。0 個以下であることが必要です。scene = new Scene3D( container ); 1180: 未定義である可能性が高いメソッド OldCube の呼び出しです。cubeObj = new OldCube( material, cubeSize, cubeSize, cubeSize, segment, segment); 1061: 未定義である可能性のあるメソッド renderCamera を、静的型 org.papervision3d.scenes:Scene3D の参照を使用して呼び出しました。scene.renderCamera( camera ); Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。return (displayObjects[do3d] != null); Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。var bEnd:Boolean = i==(iHorNum-0); といったエラーがずらずら表示されます。他のサンプルでもpapervision3Dを使用したものでは同じようなエラーがでてしまいます。 何か特別な設定が必要なのか、クラスパスの設定なのか、それとも根本的な問題なのか、検討がつきません。。 お解りになる方、助けてください。

    • ベストアンサー
    • Flash
  • actionscript3.0 初心者です。

    ある円の半径を、マウスカーソルのX座標に対応させて変化させよう思い、以下の記述を行ったのですが、プレビューにて全く何も表示されません。お心当たりあれば是非教えていただきたいです。やはり、半径の値をiの形で代入させるようにしたことが無理矢理だったのでしょうか。よろしくお願いします。 package { import flash.display.Sprite; import flash.events.Event; public class boin extends Sprite {  public function boin() { var _maru:Sprite = new Sprite(); var i:Number = new Number();    _maru.graphics.beginFill(0xFF0000);    _maru.graphics.drawCircle(0,0,i);    _maru.graphics.endFill();    _maru.x = 100;    _maru.y = 200;    addChild(_maru);  addEventListener(Event.ENTER_FRAME,boo);  {   function boo(event:Event):void    {     _maru.x = mouseX;     i = mouseX;     }   } } } } ASファイル(boin)

    • ベストアンサー
    • Flash
  • ac3 if 構文の作り方

    以下のスクリプとで、最初にbox1が動き出して、box1がbox2を、x座標について値が上回ったとき、box2も動き出す、というもので詰まっています。すごく単純な見落としをしているのだと思いますが、どうにも行きません。お知恵をお借りできますと助かります。 import flash.display.Sprite; import flash.events.Event; var box1:Sprite=new Sprite; box1.graphics.beginFill(0x00FF00);   box1.graphics.drawRect(50,100,50,50);   box1.graphics.endFill(); var box2:Sprite=new Sprite; box2.graphics.beginFill(0x00FF00);   box2.graphics.drawRect(100,200,50,50);   box2.graphics.endFill(); addChild(box1); addChild(box2); box1.addEventListener(Event.ENTER_FRAME,mo); function mo(e:Event):void{ box1.x += 1;} trace("ok") if(box1.x>box2.x){ box2.addEventListener(Event.ENTER_FRAME,mo2); function mo2(e:Event):void{ box2.x += 1} trace("ok2")};

    • ベストアンサー
    • Flash
  • Flash ActionScript 3のエラー

    下記のコードについて、エラーがわからず困っています。 上から13行目の(stage.addChild(background)に対して、 Error Message: "Cannot access a property or method of a null object reference." がでます。 この13行目までは、ちゃんと動いていたのに、これ以降コードを加えていくと、 動きません。 お分かりになる方、どうぞ教えてください。 まだ初心者(2週間)なので、初歩的な質問かもしれませんが、よろしく お願いします。 [コード] import flash.display.MovieClip; import flash.display.Stage; import flash.events.Event; public class GameEngine extends MovieClip { public function GameEngine() { super(); //create background and add to stage var background:Background = new Background(); stage.addChild(background); background.x = 500 / 2; background.y = 400 / 2; //create fly and add to stage var fly:Fly = new Fly(stage); stage.addChild(fly); fly.x = 100; fly.y = 400 / 2; //creat new enemy objects addEventListener(Event.ENTER_FRAME, createEnemy, false, 0, true); } private function createEnemy(e:Event):void{ if(Math.floor(Math.random() * 90) == 5){ var enemy:FlySwatter = new FlySwatter(stage); } } } (行はじめの } の余白が入力した通りに表示されませんので、余白は無視してください)

  • PHPの取得情報をFlashで表示する方法

    flashについて質問です。 time.phpに現在の時間を取得する <?php echo date("Y/m/d"); ?> を書いて保存し、 それをtimeLoad.as(AS 3.0)をドキュメントクラスとするflash上で表示したいのですが、 package{ import flash.display.MovieClip; import flash.text.TextField; import flash.text.Font; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; public class timeLoad extends Sprite{ private var tf:TextField; public function timeLoad():void{ var myRequest:URLRequest = new URLRequest("time.php"); var myLoader:URLLoader = new URLLoader(); myLoader.load(myRequest); tf = new TextField(); tf.defaultTextFormat = new TextFormat("Helvetica",10,0x000000); tf.x = 0; tf.y = 0; tf.text = myLoader.data; addChild(tf); } } } tfの内容が2011.1.1などになるのが目的です。 swfファイル、swfを埋め込んだhtmlファイル、phpファイルは同じ階層にあります。 php側flash側の訂正点をご指摘いただけると嬉しいです。

    • ベストアンサー
    • Flash
  • addChildしたオブジェクトを完全に消したい。

    flash cs3 action script3.0 で制作しています。 papervision3Dで制作したswfを3つ同じフォルダ内に置いて ボタンを3つ作り function call(e:Event){ var loader_obj1 : Loader = new Loader(); loader_obj1.load(new URLRequest("hoge1~3.swf")); stage.addChildAt(loader_obj1,0); } で呼び込んでます。 この呼び出したswfを removeChild(hoge1~3.swf); で消したいのですが、姿は消えるんですが存在はしているらしく呼び出す度にどんどん重たくなっていきます。 この呼び出したswfを完全に消す方法はあるんでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう