Vosegus Sakura

  1. Home
  2. Vosegus Labs
  3. もっと AS3 を試してみる

もっと AS3 を試してみる

Vosegus Labs

初めてのActionScript 3.0

初めてのActionScript 3.0イメージ

ActionScript 3.0について学び直したいと思う初心者プログラマーはもとより、ActionScript 3.0はまったく初めてというFlashのデザイナーや開発者向けに書かれた入門書です。初級者にも扱いやすいタイムラインで実行できるコード例を示しながら、プログラミングに必要な基礎を解説していくので、確かめながら理解を深めていくことができます。

定価 ¥ 3,570

ドラッグする方向を制限する 衝突したオブジェクトを押し動かす

SWF

ActionScript

var flg:int = 0; var grandMc:MovieClip = new MovieClip(); var mc:MovieClip = new MovieClip();//インスタンスを生成 var grp:Graphics = mc.graphics;//graphicsオブジェクトへのショートカットを作成 grp.lineStyle(0,0xFFAAAA,1);//線を追加(線の太さ,色) grp.beginFill(0xFFAAAA,15);//塗りを追加(色,アルファ[0~1]) grp.drawRect(220,20,20,20);//矩形を描画(x,y,幅,高さ) mc.name = "obj"; grandMc.addChild(mc); var mc1:MovieClip = new MovieClip(); var grp1:Graphics = mc1.graphics; grp1.lineStyle(0,0xFFAA00,1); grp1.beginFill(0xFFAA00,15); grp1.drawRect(260,20,20,20); mc1.name = "obj1"; grandMc.addChild(mc1); addChild(grandMc); grandMc.addEventListener(MouseEvent.MOUSE_DOWN,strDrag); grandMc.addEventListener(MouseEvent.MOUSE_UP,stpDrag); grandMc.addEventListener(Event.ENTER_FRAME,function(){ if(mc.hitTestObject(mc1) == true){ if(flg == 1){ mc1.x = mc.x-20; }else if(flg == 2){ mc.x = mc1.x+20; } if(mc1.x<mc.x){ mc1.x = mc.x-20; } } }); //範囲制限 親要素からの相対 (xStart, yStart, xEnd, yEnd) var bounds:Rectangle = new Rectangle(0,0,-240,0); function strDrag(evt:Event):void{ evt.target.startDrag(false,bounds); if(evt.target.name == "obj"){ flg = 1; }else if(evt.target.name == "obj1"){ flg = 2; } } function stpDrag(evt:Event):void{ evt.target.stopDrag(); }

このページの上部へ

モザイクの色をマウスオーバーで変える

SWF

ActionScript

var grandMc:MovieClip = new MovieClip(); grandMc.name = "gmc"; var xPos:Number = 0; var yPos:Number = 0; var inc:Number = 12; for(var i:Number=1;i<1000;i++){ var mc:MovieClip = new MovieClip(); var grp:Graphics = mc.graphics; var color = Math.random() * 0xFFFFFF; grp.lineStyle(0,color,1); grp.beginFill(color,15); grp.drawRect(0,0,inc,inc); mc.name = "obj"+i; mc.height = inc; mc.width = inc; mc.y = yPos; mc.x = xPos; grandMc.addChild(mc); xPos+=inc; if(xPos%200==0){ yPos+=inc; xPos=0; } } addChild(grandMc); grandMc.addEventListener(MouseEvent.MOUSE_OVER,over,false, 0, true); function over(evt:Event):void{ var eGrp:Graphics = evt.target.graphics; var eColor = Math.random() * 0xFFFFFF; eGrp.lineStyle(0,eColor,1); eGrp.beginFill(eColor,15); eGrp.drawRect(0,0,inc,inc); //evt.target.alpha = Math.random(); }

このページの上部へ

Soundクラスを使ってみる

Sound - ActionScript 3.0 コンポーネントリファレンスガイド

SWF

ActionScript

package { import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Graphics; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.geom.Rectangle; import fl.transitions.Tween; import fl.transitions.TweenEvent; import fl.transitions.easing.*; public class Learning16 extends Sprite { public function Learning16() { //変数の宣言 var progObj:Sprite; var mcCtrl:MovieClip; var volumeCtrl:MovieClip; var bounds:Rectangle var sondFlg:Boolean=false; var trans:SoundTransform; var volumePos:Number = 160; var soundPos:Number = 0; //読込経過報告オブジェクト生成 progObj=new Sprite(); var grp:Graphics=progObj.graphics; grp.lineStyle(0,0x666666,1); grp.beginFill(0x666666,1); grp.drawRect(0,0,1,1); progObj.name="progObj"; addChild(progObj); progObj.y=100; //Soundインスタンスを生成 var sound:Sound=new Sound(); var soundChannel:SoundChannel = new SoundChannel(); //読込開始 sound.load(new URLRequest("example.mp3")); //読込エラー報告 sound.addEventListener(IOErrorEvent.IO_ERROR,erroeReport,false,0,true); //読込経過報告 sound.addEventListener(ProgressEvent.PROGRESS,progressReport,false,0,true); //読込完了後、処理を開始 sound.addEventListener(Event.COMPLETE,completeEvent,false,0,true); //********************* //読込エラー報告関数 //********************* function erroeReport(evt:IOErrorEvent):void { trace("サウンド読み込みエラー"); } //********************* //読込経過報告関数 //********************* function progressReport(evt:ProgressEvent):void { progObj.width=300*(evt.bytesLoaded/evt.bytesTotal); } //********************* //読込完了後のイベント関数 //********************* function completeEvent():void { var target=getChildByName("progObj"); //Loading Bar 削除 removeChild(target); //再生停止ボタン生成 createImg(1); //振幅メーター生成 var meter0:Sprite=new Sprite(); var grp0:Graphics=meter0.graphics; grp0.lineStyle(0,0xFFAA00,1); grp0.beginFill(0xFFAA00,1); grp0.drawRect(0,0,10,100); meter0.name="meter0"; addChild(meter0); meter0.y=100; meter0.x=40; var mask0:Sprite=new Sprite(); var mgrp0:Graphics=mask0.graphics; mgrp0.lineStyle(0,0x000000,1); mgrp0.beginFill(0x000000,1); mgrp0.drawRect(0,0,10,100); mask0.name="mask0"; addChild(mask0); mask0.y=100; mask0.x=40; meter0.mask = mask0; var meter1:Sprite=new Sprite(); var grp1:Graphics=meter1.graphics; grp1.lineStyle(0,0xFFAAAA,1); grp1.beginFill(0xFFAAAA,1); grp1.drawRect(0,0,10,100); meter0.name="meter1"; addChild(meter1); meter1.y=100; meter1.x=260; var mask1:Sprite=new Sprite(); var mgrp1:Graphics=mask1.graphics; mgrp1.lineStyle(0,0x000000,1); mgrp1.beginFill(0x000000,1); mgrp1.drawRect(0,0,10,100); mask1.name="mask1"; addChild(mask1); mask1.y=100; mask1.x=260; meter1.mask = mask1; //ボリュームコントロール生成 volumeCtrl = new Volume(); volumeCtrl.name = "volumeCtrl"; addChild(volumeCtrl); volumeCtrl.x = (stage.stageWidth/2) - (volumeCtrl.width/2); volumeCtrl.y=volumePos; volumeCtrl.addEventListener(MouseEvent.MOUSE_DOWN,strDrag); volumeCtrl.addEventListener(MouseEvent.MOUSE_OUT,stpDrag); //エンターフレーム監視 volumeCtrl.addEventListener(Event.ENTER_FRAME,function(){ //ボリューム設定 var vNum:Number = (getChildByName("volumeCtrl").x/250)*1.6; trans = new SoundTransform(); trans.volume=vNum; soundChannel.soundTransform=trans; //メーター設定 meter0.mask.y = (100*soundChannel.leftPeak)+100; meter1.mask.scaleY = soundChannel.rightPeak; }); } //********************* //サウンドコントロール関数 //********************* function mcCtrlEvents():void { if (sondFlg==true) { //停止した位置を取得 soundPos = soundChannel.position; soundChannel.stop(); sondFlg=false; createImg(1); } else { //サウンドを制御するためにSoundChannelに代入 soundChannel=sound.play(soundPos,1);//sound.play(再生開始時間:ミリ秒 , ループ回数 , SoundTransform) createImg(0); sondFlg=true; //サウンドが終了したらループ soundChannel.addEventListener(Event.SOUND_COMPLETE,function(){ soundPos = 0; soundChannel=sound.play(soundPos,1); }); } } //********************* //イメージ作成・切替関数 //********************* function createImg(type:int):void { if (getChildByName("mcCtrl")) { var remTarget=getChildByName("mcCtrl"); removeChild(remTarget); } if (type==0) { mcCtrl = new Stop(); } else if (type == 1) { mcCtrl = new Play(); } mcCtrl.name="mcCtrl"; addChild(mcCtrl); mcCtrl.x = (stage.stageWidth/2) - (mcCtrl.width/2); mcCtrl.y = (stage.stageHeight/2) - (mcCtrl.height/2); mcCtrl.addEventListener(MouseEvent.MOUSE_UP,mcCtrlEvents,false,0,true); } //********************* //ドラッグ関数 //********************* //範囲制限 親要素からの相対 (xStart, yStart, xEnd, yEnd) bounds=new Rectangle(0,volumePos,150,0); function strDrag(evt:Event):void { evt.target.startDrag(false,bounds); } function stpDrag(evt:Event):void { evt.target.stopDrag(); } } } }

このページの上部へ

Sketchbookを使ってみる

SWF

ActionScript

package { import flash.display.Sprite; import flash.events.Event; import sketchbook.SketchBook; import sketchbook.display.SpriteHelper; import sketchbook.graphics.GraphicsHelper; public class learning17 extends Sprite { public function learning17() { //多角形 var sp = new Sprite(); var helper:SpriteHelper=new SpriteHelper(sp); helper.beginFill(0x666666); helper.drawStar(80,80, 30, 50,12, 45);//(x,y,外径,内径,角数,回転角度) helper.endFill(); addChild(sp); //円弧 var sp1 = new Sprite(); var helper1:SpriteHelper=new SpriteHelper(sp); helper1.beginFill(0x666666); helper1.drawPie(180, 90, 50, 110, -90);//(x,y,半径,内径,塗りつぶす角度,回転角度) helper1.endFill(); addChild(sp1); //リング var sp2 = new Sprite(); var helper2:GraphicsHelper=new GraphicsHelper(sp2.graphics); helper2.beginFill(0x666666); helper2.drawRing(320, 80, 10, 25, 270, -90);//(x,y,内縁,内径,塗りつぶす角度,回転角度) helper2.endFill(); addChild(sp2); var rad:Number = 0; sp2.addEventListener(Event.ENTER_FRAME,function(){ sp2.graphics.clear(); var helper3:GraphicsHelper=new GraphicsHelper(sp2.graphics); helper3.beginFill(0x666666); helper3.drawRing(320, 80, 10, 25, rad, -90);//(x,y,内縁,内径,塗りつぶす角度,回転角度) helper3.endFill(); if(rad<360){ rad+=10; }else{ rad=0; } }); } } }

このページの上部へ