• 締切済み

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); } } } (行はじめの } の余白が入力した通りに表示されませんので、余白は無視してください)

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

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1
mrslemon
質問者

お礼

ご丁寧にありがとうございました!! とっても助かりました。

関連するQ&A

  • ActionScript3.0についての質問です

    はじめまして。 いまFlash ActionScript3.0を勉強中です。 フルスクリーンについてどうしてもわからないことがありまして 質問させていただきました。 フルスクリーン処理をasファイルで制作中で、 fullscreenボタンを押すとnormalボタンに切り替わる処理ができません。 特にエラーも起きなくて混乱中です。 すいませんがよろしくお願いします。 ※質問内容以外省略。 package { //インポート import flash.display.Sprite; import flash.display.SimpleButton; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.Event; import flash.events.MouseEvent; import flash.events.FullScreenEvent; [SWF(backgroundColor="#000000", width="600", height="400", frameRate="30")] public class Main extends Sprite { //プロパティ private var fullscreenBtn:Sprite; private var fullscreenBtn1:SimpleButton; private var normalBtn1:SimpleButton; // コンストラクタ public function Main() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init(); stage.addEventListener(Event.RESIZE, updatePos, false, 0, true); } // メソッド private function init():void { fullscreenBtn = new Sprite(); addChild(fullscreenBtn); fullscreenBtn.y = 6; var fullscreenBtn1 = new FullscreenBtn(); var normalBtn1 = new NormalBtn(); fullscreenBtn.addChild(fullscreenBtn1); fullscreenBtn.addEventListener(MouseEvent.CLICK,btChangeClicHandler); stage.addEventListener(FullScreenEvent.FULL_SCREEN,stageFullScreenHandler); updatePos(null); } //イベント private function updatePos(evt:Event):void { fullscreenBtn.x = stage.stageWidth - 85; } //マウスイベント private function btChangeClicHandler(evt:MouseEvent):void { if (stage.displayState == StageDisplayState.FULL_SCREEN) { stage.displayState = StageDisplayState.NORMAL; } else { stage.displayState = StageDisplayState.FULL_SCREEN; } } //ボタンの切り替え ※この処理がうまくいきません。エラーは起こりません。 private function stageFullScreenHandler(evt:FullScreenEvent):void { if (evt.fullScreen) { fullscreenBtn.removeChild(fullscreenBtn1); fullscreenBtn.addChild(normalBtn1); } else { fullscreenBtn.removeChild(normalBtn1); fullscreenBtn.addChild(fullscreenBtn1); } } } }

    • ベストアンサー
    • Flash
  • 円をランダムで描画していき、最初の円から徐々に透明になる

    現在AS3.0にてランダムで永遠と円を描きながらも、描画した円から順番に透明になっていくスクリプトを書いているのですが、以下のスクリプトですと全体が透明になっていき、最終的に何も残らなくなってしまいます。 常に透明度1の円を描画しつつも、先に描画した円から徐々に透明になっていくスクリプトにするにはどうすればよいのでしょうか?ご教授お願いできればと思います。 addEventListener(Event.ENTER_FRAME, rain); import flash.display.Sprite; import flash.display.MovieClip; var mySprite:Sprite = new Sprite(); var myClip:Sprite = new Sprite(); addChild(myClip); function rain(event:Event):void { with(mySprite.graphics) { var circle:int = Math.floor(Math.random()*100); var stageX:int = Math.floor(Math.random()*stage.stageWidth); var stageY:int = Math.floor(Math.random()*stage.stageHeight); beginFill(0x000000); drawCircle(stageX, stageY , circle); endFill; myClip.addChild(mySprite); var diff:Number = 0.01; myClip.alpha -= diff; } }

    • ベストアンサー
    • Flash
  • actionscript 3.0 初心者です

    以下の3つの質問にご回答いただければ幸いです。 以下の参考にさせていただいている、スクリプトにて 1、random関数の()の後に来る数字はどのような範囲を意味しているのでしょうか? 2、sList[i].vx = Math.random() -0.5;という記述について、これはあるオブジェクトの 落下(進行)の速度を示しているらしいのですが、その手前の記述で、 private var vx:Number = 0;という記述があります。自分で定義したものをプロパティーとして使い事はできるのでしょうか?(もしくわこのvxはarrayのプロパティとして使われていると考えてよろしいのしょうか?) 3、なぜ速度をわざわざ配列で記入する必要があるのでしょうか? 多岐にわたっておりますが、是非よろしくお願い致します。 package{ import flash.display.Sprite; import flash.display.MovieClip; import flash.geom.Matrix; import flash.events.Event; import flash.filters.BlurFilter; public class Main extends Sprite { private var snow:Ball;     private var num:int = 200; private var sList:Array = []; private var vx:Number = 0; public function Main(){ for(var i:int = 0; i < num; i++){ var snow:Ball = new Ball(2,0xaaffff) //初期位値 snow.x = Math.random() * stage.stageWidth; snow.y = Math.random() * stage.stageHeight; //大きさを生成順に小さく snow.scaleX = snow.scaleY = 1 / (0.02 * i + 1); //配置して配列に入れる addChild(snow); sList.push(snow); //それぞれのx方向の速度設定 sList[i].vx = Math.random() -0.5; } addEventListener(Event.ENTER_FRAME,go1); } private function go1(evt:Event):void{ for(var i = 0; i < num; i++){ //x方向とy方向の動き設定(奥のものほど遅くなる) sList[i].x += sList[i].vx / (0.02 * i + 1); sList[i].y += 4 / (0.02 * i + 1); //ステージ外(下)に出たら移動 if(sList[i].y > 400){ sList[i].x = Math.random() * stage.stageWidth; sList[i].y = 0; } } } } }

    • ベストアンサー
    • Flash
  • Actionscript3.0のクラス定義の仕方

    ActionScript3.0のクラス定義について質問なのですが、回転するインスタンスがあり(それは最初からステージに置いてあります)、それがマウスが近づくにつれてだんだん回転が速くなるのを作りたいのですがなかなかうまくいきません。 クラス定義をせずに書いた場合ですとうまくいきましたが、それを外部ファイルにカスタムクラス(と言うんでしょうか?)をした場合、やり方がいまいち理解できずにうまくいかないんです。 クラス定義せずに書いたのはこちらです↓ addEventListener(Event.ENTER_FRAME, onEnterframe); function onEnterframe(eventObj:Event):void { //インスタンスの座標 var hanePt:Point=new Point(hane_mc.x,hane_mc.y); //マウスの座標 var mousePt:Point=new Point(stage.mouseX,stage.mouseY); //インスタンスとマウスの距離 var distance:Number=Point.distance(hanePt,mousePt); //距離が200以下の時に回転する if(distance<200){ hane_mc.rotation+=2000/Math.max(50,distance); } これですとちゃんと動きました。 そしてクラス定義にしたのがこちらです↓ メインのタイムラインのところにはこちらを書いて↓ var mousePt:Point=new Point(stage.mouseX,stage.mouseY); var haneobj1:Hane = new Hane(hane_mc); haneobj1.moveHane(mousePt); 外部ファイルにはこちらを書きました↓ package{ import flash.display.MovieClip; import flash.events.Event; import flash.geom.Point; public class Hane extends MovieClip{ //インスタンスのプロパティ var hane_mc:MovieClip; var ballPt:Point; var distance:Number; public function Hane(hane:MovieClip){ hane_mc = hane; ballPt = new Point(hane_mc.x,hane_mc.y); } public function moveHane(mou:Point):void{ distance = Point.distance(ballPt,mou); addEventListener(Event.ENTER_FRAME, kaitenHandler); } public function kaitenHandler(ev:Event):void{ //距離が200以下の時に回転する if(distance<200){ hane_mc.rotation+=2000/Math.max(50,distance); } } } } とくにエラーは出ないのですが、動くときと動かないときがあります。 動いたとしても一定の動きで、マウスが近づいてもとくに回転速度は変わりません。 どこか間違っているところあればご教授してください!! よろしくお願いします!!!

    • ベストアンサー
    • Flash
  • AS3.0 自作ファイルのインポートしてnewができない

    AS3.0 自作ファイルのインポートと、newの仕方 flashCS3でWIndowsXP使用 下は、classA.asファイル package{ import flash.events.MouseEvent; import flash.events.Event; import flash.display.MovieClip; public class Bom{ var stage:MovieClip; public function Bom(stage:MovieClip){ this.stage = stage; } } } これを、あるフラッシュプロジェクトのタイムラインで使用したい。 import classA.as var bom = new Bom(stage); こうすると見て意義である可能性が高いBom()の呼び出しです。 とエラーが出ます。 解決方法を教えてください。 インポートはたぶん成功しています。

  • actionscript 3.0 初心者です

    現在bitmap処理について調べています。 以下の記述に置いて、ライブラリーにあるpng画像をbitmapで読み込みました。 この画像はswfファイルに埋め込み済みでクラスをtokyo1としています。 続いて、これを.draw()を使って画像に変化を起こそうとしましたが、 こちらはうまく行きませんでした。 どこかおかしいのでしょうか?お心当たりございましたら是非よろしくお願いします。 import flash.display.BitmapData; import flash.display.Bitmap; import flash.geom.Matrix; import flash.geom.ColorTransform; var rectX:Number=40; var rectY:Number=30; var rectwidth:Number=20; var rectheight:Number=20; var rect1:Rectangle=new Rectangle(rectX,rectY,rectwidth,rectheight); var btm_data:BitmapData=new tokyo1(); var btm_obj:Bitmap=new Bitmap(btm_data,PixelSnapping.AUTO,false); var matrix:Matrix=new Matrix(2,0,0,3,0,0); var color:ColorTransform=new ColorTransform(1,1,1,1,0,0,0,0); btm_data.draw(stage,matrix,color,BlendMode.NORMAL,rect1,true); addChild(btm_obj);

    • ベストアンサー
    • Flash
  • actionscriptに詳しい方助けてorz

    actionscript3.0を勉強中の初心者です。 現在、フルフラッシュサイトを制作中なのですが、 基本はactionscriptを使用しないで、 作っているのですが、 一部、雪を降らせる演出をactionscriptで実装しています。 そのスクリプトは組めたのですが、 実際にその演出をしたい階層がうまく変更できません。 現状は最前面になっているのですが、 それを最背面の一つ手前にしたいです。 具体的なビジョンとしては 最背面の背景→その上にある画像(部分的に切り抜かれて背景が見えます) この二つの間に雪を降らせたいのですが、 うまくいきません。 何か方法をご存知の方いたら教えていただけると助かります。 スクリプトは下記になります。 addEventListener(Event.ENTER_FRAME , onNewSnow) ; function onNewSnow(eventObj : Event) : void { if (Math.random() <0.3) { var snow_mc:snows = new snows(); snow_mc.x=stage.stageWidth*Math.random(); snow_mc.y=-20; snow_mc.scaleX=snow_mc.scaleY=Math.random()+0.5; addChild(snow_mc); snow_mc.addEventListener(Event.ENTER_FRAME, onSnowStep); } } function onSnowStep(eventObj:Event):void { var target_mc:MovieClip=eventObj.target as MovieClip; target_mc.rotation+=Math.ceil(20/target_mc.scaleX); target_mc.x+=4*Math.random()-2; target_mc.y+=5; if (target_mc.y >(stage.stageHeight+target_mc.height)) { target_mc.removeEventListener(Event.ENTER_FRAME, onSnowStep); removeChild(target_mc); } }

    • ベストアンサー
    • Flash
  • AS3の拡大と縮小について

    下記の外部ASで試しているのですが比率を維持して拡大されます。 予想では横は100%で縦に300%伸びて表示されるはずなのですがなぜ比率が 維持されるのでしょうか? また、縦だけとこ横だけ拡大や縮小するにはどう書けばいいのでしょうか? package { import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends MovieClip { private var mc:MovieClip; private var text:TextField; public function Main():void { mc = new MovieClip(); addChild(mc); text = new TextField(); text.text = "テスト"; text.scaleX = 1; text.scaleY = 3; mc.addChild(text); } } }

    • ベストアンサー
    • Flash
  • ActionScript3.0 雪を降らせる方法

    はじめまして! Flashを勉強し始めたばかりの初心者ですが 雪のインスタンスを作成し、ステージの上から下へランダムな大きさで(ぼかしも入れつつ)降ってくるムービーを作りたいと思っています。 色々検索した結果、下記サンプルソースを発見したので とりあえず、 「snow_mc」というムービークリップをflaファイルのライブラリに格納し ParticleSimulatorクラスをリンゲージ設定後、 下記フレームアクションに追加したのですが、、、雪が降ってきません・・ var Snowdrop = new ParticleSimulator(); addChild (Snowdrop); エラーもでてこないのでどこをどう直せばいいかわらず困っております・・ まったくのど素人で申し訳ありませんが どなたかご教授いただけるととっても助かります! ちなみに、使用したクラスは下記です。 <ParticleSimulatorクラス> package{ import flash.display.*; import flash.events.*; public class ParticleSimulator extends Sprite{ private static var GRAVITY:Number = 9.8; private static var ro:Number = 1.205; private static var nyu:Number = 0.00001512; private var myImage:Class; private static var w:int = 685; private static var h:int = 455; public function ParticleSimulatorR(){ var bitmap:Bitmap = new myImage(); addChild(bitmap); for(var i:int = 0 ; i < 100 ; i++){ var l:Number = Math.random() * 0.000005; var p:Particle = new Particle(l*1500000); p.x = w*Math.random(); p.y = h*Math.random(); p.alpha = Math.random()/2 + 0.4; p.diameter = l; p.mass = l * 10; addChild(p); p.addEventListener(Event.ENTER_FRAME, loop); } } public function loop(e:Event):void{ var p:Particle = Particle(e.target); p.t++; p.vy = Math.pow((p.mass * GRAVITY) / (3 * Math.PI * ro * nyu * p.diameter), (1 - Math.exp(-3*Math.PI*ro*nyu* p.diameter * p.t/ p.mass))); //p.x += 1; p.y += p.vy; // マウスからの距離 var distance:Number = Math.sqrt((mouseX - p.x)*(mouseX - p.x) + (mouseY-p.y)*(mouseY-p.y)); // 加速度(距離が近いほど大きく、質量が大きいほど小さく) p.ax = (400 / distance) * 0.1 / (p.mass * 1000000); if(mouseX > p.x) p.ax *= -1; p.vx += p.ax; p.x += p.vx; if(p.x > w || p.y > h){ p.x = w*Math.random(); p.vx = p.ax = 0; p.y = 0; p.t = 0; } } } }

  • 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

専門家に質問してみよう