• 締切済み

AS3.0のグラフィックについて

chara0-mの回答

  • chara0-m
  • ベストアンサー率50% (3/6)
回答No.1

>>参考書をみて打ってみたのですが、エラーになってないのに表示されませんでした。 作った描画オブジェクトは、ステージ上に追加表示させていますか? addCHild( rect ); >>graphics.beginFill();の()の中に関数は使えるのでしょうか? ()の中に関数の指定はできません。 その前に、色の指定をしてやるしかないと思います。

yuki_bono
質問者

お礼

追加表示させてませんでした。 ためしに入れてみたら表示されました。 色は色々試行錯誤したらできました。 回答、ありがとうございました。

関連するQ&A

  • FLASHの出力エラーについて

    FLASHの出力エラーの原因がわかりません。 プレビューを押したとき ArgumentError: Error #2004: パラメータの 1 つが無効です。 at flash.display::Graphics/drawRect() at _fla::MainTimeline/xClick() とでてしまいます。 詳しい方、ご教授お願い致します。 ↓アクションスクリプトです add_btn.addEventListener(MouseEvent.CLICK, xClick); function xClick(evt) { var num1:Number = Number(in1_txt.text); var num2:Number = Number(in2_txt.text); var h:Number; if (num1 < 18) { h = 60; } else if ((num1 >= 18) && (num1 < 20)) { h = 50; } else if ((num1 >= 20) && (num1 < 23)){ h = 40; } var black:Number; if (num1 < 18) { black = (0xb0c4de); } else if ((num1 >= 18) && (num1 < 20)) { black = (0x8e9db2); } else if ((num1 >= 20) && (num1 < 23)) { black = (0x66707f); } else if ((num1 >= 23) && (num1 < 26)) { black = (0x232933); } else if(num1 > 25) { black = (0x232933); } var iro:Number; if (num1 < 18) { iro = 0.3;; } else if ((num1 >= 18) && (num1 < 20)) { iro = 0.4; } else if ((num1 >= 20) && (num1 < 23)){ iro = 0.5; }else if (num1 >50){ iro = 1.0; } var color:Number; if ((num2 >= 18) && (num2 <=25)){ color = (Math.random() * 0xffffff); } else if ( (num2 >=40) && (num2 <= 50)) { color = (0x999966); } else if(num1 > 50){ color = (0x996633); } else { color = (Math.random() * 0xffffff); } var k:Number; if ((num1 >= 23) && (num1 < 25)) { var mae:Shape=new Shape(); mae.graphics.beginFill(color); mae.alpha = 0.5; mae.graphics.drawRect(645 ,410, 310, 30); mae.graphics.endFill(); addChild(mae); for( y = 455 ; y <= 770 ; y = y + 255 ) { var ye:Shape=new Shape(); ye.graphics.beginFill(black); ye.graphics.drawRect(645 ,y, 310, 35); ye.graphics.endFill(); addChild(ye); } for( y = 505 ; y <= 700 ; y = y + 55 ) { var shima:Shape=new Shape(); shima.graphics.beginFill(color); shima.alpha = 0.5; shima.graphics.drawRect(645 ,y, 310, 28); shima.graphics.endFill(); addChild(shima); } } var m:Number; if (num1 >= 25) { var bod:Shape=new Shape(); bod.graphics.beginFill(color); bod.alpha = 0.5; bod.graphics.drawRect(645 ,410, 310, 10); bod.graphics.drawRect(645 ,490, 310, 10); bod.graphics.drawRect(645 ,660, 310, 20); bod.graphics.drawRect(645 ,685, 310, 5); bod.graphics.endFill(); addChild(bod); for( y = 430 ; y <= 700 ; y = y + 265 ) { var rec:Shape=new Shape(); rec.graphics.beginFill(black); rec.graphics.drawRect(645 ,y, 310, 50); rec.graphics.endFill(); addChild(rec); } for( y = 500 ; y <= 655 ; y = y + 40 ) { var ran:Shape=new Shape(); ran.graphics.beginFill(color); ran.alpha = 0.5; ran.graphics.drawRect(645 ,y, 310, Math.random()*30); ran.graphics.endFill(); addChild(ran); } }

  • AS3.0 写真の切り替え

    調べても調べても漠然とした状態が続いてるので質問させていただきました。 まず、サンプルとしてこんなようなものが作りたいんです。 http://www.subaru-sls.co.jp/ ここの企業みたいな写真が一定時間でその場所その場所に移動していくというのを作りたいのですが、今後のことを考え、タイムラインにASを組むのではなく、外部AS(ドキュメントクラス?)だけで作りたいのです。 因みに写真などの配置はなんとかできたのですが、写真が切り替わるのがまったくわかりません。 こちらが現状況のコードになります。↓ package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Shape; import flash.events.TimerEvent; import flash.utils.Timer; import flash.events.MouseEvent; import flash.display.Bitmap; [SWF(width = "550",height = "400")] public class main extends Sprite { //プロパティ var mc01:Sprite = new Sprite(); var mc02:Sprite = new Sprite(); var mc03:Sprite = new Sprite(); var imgUrl01:String = "kabegami1.jpg"; var imgUrl02:String = "kabegami2.jpg"; var imgUrl03:String = "kabegami3.jpg"; var onUrl01:URLRequest = new URLRequest(imgUrl01); var onUrl02:URLRequest = new URLRequest(imgUrl02); var onUrl03:URLRequest = new URLRequest(imgUrl03); var img01:Loader = new Loader(); var img02:Loader = new Loader(); var img03:Loader = new Loader(); var square01:Shape = new Shape(); var square02:Shape = new Shape(); var square03:Shape = new Shape(); var i:int = 0; var timer:Timer = new Timer(20); //コンストラクタ public function main () { init (); } //メソッド private function init () { square01.graphics.beginFill (0x000000); square02.graphics.beginFill (0x000000); square03.graphics.beginFill (0x000000); square01.graphics.drawRect (10, 10, 330, 380); square02.graphics.drawRect (350, 10, 110, 380); square03.graphics.drawRect (470, 10, 70, 380); square01.graphics.endFill (); square02.graphics.endFill (); square03.graphics.endFill (); img01.mask = square01; img02.mask = square02; img03.mask = square03; img01.load (onUrl01); img02.load (onUrl02); img03.load (onUrl03); addChild (square01); addChild (square02); addChild (square03); addChild (img01); addChild (img02); addChild (img03); timer.addEventListener (TimerEvent.TIMER,onTimer); timer.start (); img01.addEventListener (MouseEvent.MOUSE_DOWN,mouseDownHandler); } private function mouseDownHandler (event:MouseEvent):void { } private function onTimer (event:TimerEvent):void { i++; img01.alpha -= 0.01; } } } 長文になってしまいましたが、どうかご教授お願いします。

    • ベストアンサー
    • 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
  • ASファイルからのstage

    flashcs3 actionscript3.0で作成しています。 asファイル "Test.as" package { import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.*; public class Test extends Sprite { public function Test() { init(); } private function init() { for (var i:uint = 0; i<10; i++) { var sp:Sprite = new Sprite(); sp.graphics.beginFill(0x00CCFF); sp.graphics.drawRect(i*20,50,20,20); sp.graphics.endFill(); stage.addChild(sp); } } } } flash var hoge2 = new Test(); と書いてflash上のstage上にSpriteをaddChildしたいのですがstageをnullと解釈してしまいます。 この場合flash上のstageを参照するにはどうすれば良いのでしょうか?

    • ベストアンサー
    • Flash
  • addChildした後に操作したい。

    package { import flash.display.*; public class goo extends Sprite { public function goo() { create(); stage.myRect.y =100;// 1119 未定義である可能性が高い・・・エラー。 } public function create() { var myRect:Sprite = new Sprite(); myRect.graphics.beginFill(0xFF0000); myRect.graphics.drawRect(10,10,200,100); myRect.name = "rect"; addChild(myRect); } } } addChildした後にmyRectのyの位置等を変更するにはどうすればよいでしょうか。 また、この問題について詳しく載っているURL等があれば教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0でムービークリップ制御

    現在、AS3.0でswfファイルを読み込み、その再生・停止をコントロールするswfを作ろうとしています。 そこで自分なりにプログラム書いてみたのですが、停止ができなくて困っています。 以下ソース package { import flash.display.*; import flash.events.*; import flash.net.URLRequest; public class Test extends Sprite { private var mc:MovieClip = new MovieClip(); private var btn_load:SimpleButton = new SimpleButton(); //loadボタン private var btn_stop:SimpleButton = new SimpleButton(); //stopボタン private var l:Loader = new Loader(); public function Test() { mc.x = 30; mc.y = 30; btn_load.upState = this.drawCircle( 0x228822, 20 ); btn_load.overState = this.drawCircle( 0x225522, 21 ); btn_load.downState = this.drawCircle( 0x553355, 20 ); btn_load.hitTestState = btn_load.upState; btn_load.addEventListener( MouseEvent.CLICK, Load ); btn_stop.upState = this.drawCircle( 0x228822, 20 ); btn_stop.overState = this.drawCircle( 0x225522, 21 ); btn_stop.downState = this.drawCircle( 0x553355, 20 ); btn_stop.hitTestState = btn_stop.upState; btn_stop.x = 50; btn_stop.addEventListener(MouseEvent.CLICK, Stop); addChild(mc); addChild(btn_load); addChild(btn_stop); mc.addChild(l); } private function drawCircle( color:uint, r:Number ):Shape { var circle:Shape = new Shape(); circle.graphics.lineStyle( 1, 0x222222 ); circle.graphics.beginFill( color ); circle.graphics.drawCircle( 0, 0, r ); circle.graphics.endFill(); return circle; } private function Load(e:Event):void{ l.load(new URLRequest("animation.swf")); } private function Stop(e:Event):void{ mc.stop(); } } } なにが原因なのでしょうか・・・ わかる方ご回答お願いします。。

    • ベストアンサー
    • Flash
  • 関数の中でaddEventListenerを設定したい

    package { import flash.display.*; import flash.events.*; public class goo extends Sprite { public function goo() { var rect = create(); //rect.addEventListener(MouseEvent.MOUSE_DOWN,oMDH); ここだとエラーが出ない。 push(); } public function create() { var myRect:Sprite = new Sprite(); myRect.graphics.beginFill(0xFF0000); myRect.graphics.drawRect(10,10,200,10); myRect.name = "rect"; return addChild(myRect); } public function push() { rect.addEventListener(MouseEvent.MOUSE_DOWN,oMDH);//ここだと1120 未定義のプロパティ・・・エラー } public function oMDH(e) { trace("ok"); } } } push() の中で rect に addEventListenerを設定したいです。 どうすればよいでしょうか。 また、rect の 絶対パス(? stage.rectみたいなやつ)も教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • [AS3]自動的に画像が重なっていくスライドショー

    ASに触れたての初心者です。 Actionscript3.0で、ボタンなどを使わない、ただ画像を順次流すだけのスライドショーが作りたいです。 何もないステージに、まずムービークリップ「Images1」が2秒くらかけて画面上からスライドして来ます。 ステージぴったりに収まった(座標が0,0になった)ところで2秒ほどImages1を見てもらいます。 次に、Images1の上にトランプが重なるように、新たなMC、「Images2」が同じような動作で降りてきます。 これも、ステージにぴたりと合わさったところで2秒ほど静止し、その上からさらに「Images3」が同じような動作で重なっていきます。 これをImages5くらいまで順次重ねていって、不要になった層は適時削除していきたいです。 Images1を「スライドしてくる」「数秒とどまる」「消える」といった動作はできたのですが、それをmages5まで繰り返させるのが全く解りませんでした…。 タイムライン上だけで作ると惜しいものができたのですが、Images5までいってImages1に戻ったときに、Images5の上からImages1を重ねるという操作がわからず、タイムラインで作るのを諦めました。 いったいどのようにスクリプトを組んだら良いのでしょうか? 大変困っています。どなたかお願い致します。 現時点のスクリプトは以下のとおりになります。 import flash.utils.Timer; import flash.display.MovieClip; import flash.events.TimerEvent; //ムービークリップ var Images1:Sprite = new Sprite(); Images1.graphics.beginFill(0x000000); Images1.graphics.drawRect(0, 0,300,-500); Images1.graphics.endFill(); addChild(Images1); //移動 this.addEventListener(Event.ENTER_FRAME,timerfunc); function timerfunc(e:Event):void { Images1.y=Images1.y+10;//スライド if(Images1.y>500)Images1.y=500;//スライドのとまる場所 timer1.start();//タイマースタート } //一定時間待ってから消えるタイマー var timer1:Timer = new Timer(6000,1); timer1.addEventListener(TimerEvent.TIMER, timerHandler1); function timerHandler1(e:TimerEvent):void{ removeChild(Images1); removeEventListener(TimerEvent.TIMER, timerHandler1); removeEventListener(Event.ENTER_FRAME,timerfunc); }

    • ベストアンサー
    • Flash
  • 三角形ABCのBを可変にしたい

    お世話になります。 Actionscript 3.0で作成しております。 点ABCがあり、点Bをモーショントゥイーンで横に動かしています。 下記のActionScriptで点ABCを結んだ三角形を表示しているのですが、 点Bをモーショントゥイーンで動かしても三角形が変化してくれません。 希望する形としては、点Bが動く度に、三角形ABCを書き直す(?) Bが移動した形になって欲しいのですがどのようにしたらよいでしょうか? ///////////////////// import flash.display.Shape; var shape:Shape=new Shape(); shape.graphics.beginFill(0xFF0000); //頂点の座標 var vertices:Vector.<Number>=Vector.<Number>([点A.x,点A.y,点B.x,点B.y,点C.x,点C.y]); shape.graphics.drawTriangles(vertices); shape.graphics.endFill(); addChild(shape); ///////////////////// お手数ですが何卒よろしくお願い致します。

    • ベストアンサー
    • 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