Vosegus Sakura

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

AS3 を試してみる

Vosegus Labs

ActionScript 3.0 プログラミング入門

ActionScript 3.0 プログラミング入門イメージ

基礎から学んで、ずっと使える。サンプルデータで着実に学べる。ActionScript 3.0でインタラクティブWebコンテンツ、リッチインターネットアプリケーション開発を本格的にはじめたい人のための解説書。

定価 ¥ 2,940

画像を読み込む 文字を生成してみる

SWF

ActionScript

import flash.display.MovieClip; import flash.display.Loader; import flash.net.URLRequest; //画像読み込み var url:String = "amz_lrnAS3.png"; var imageUrl:URLRequest = new URLRequest(url); var img:Loader = new Loader(); img.load(imageUrl); addChildAt(img,0); img.x = 5; img.y = 5; //テキスト生成 var heading = new TextField; var paragraph = new TextField; paragraph.wordWrap = true;//自動改行を許可 heading.htmlText = "<a href='url'>初めてのActionScript3.0</a>"; paragraph.text = "ActionScript 3.0について学び直したいと思う初心者プログラマーはもとより…"; addChildAt(heading,1); heading.x = 110; heading.y = 5; heading.width = 180; heading.textColor = 0x0000ff; addChildAt(paragraph,2); paragraph.x = 110; paragraph.y = 18; paragraph.width = 130; paragraph.height = 180;

このページの上部へ

EnterFrameで処理を繰り返す

SWF

ActionScript

import flash.display.MovieClip; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.events.MouseEvent; import flash.display.Sprite; //画像読み込み var imgUrl:Array = ["http://vosegus.org/blog/img/amz_smhtml.png","amz_dnav.png","amz_lrnAS3.png","amz_js.gif","amz_pgphp.gif","amz_DOM.gif"]; var imgLink:Array = ["url","url","url","url","url","url"]; var n:int = 0; var positionX:int = 0; for(var i:int=0;i<imgUrl.length;i+=1){ var sp:Sprite = new Sprite(); var castUrl:String = imgUrl[i]; var imageUrl:URLRequest = new URLRequest(castUrl); var img:Loader = new Loader(); img.load(imageUrl); sp.addChild(img) addChildAt(sp,n); sp.name = "img"+n; sp.buttonMode = true;//カーソルを指の形に変更 import flash.display.Sprite Spriteブジェクトのみ sp.x = positionX; n+=1; positionX+=110; } //getChildByNameでオブジェクトを参照し、イベントをセット getChildByName("img0").addEventListener(MouseEvent.MOUSE_UP,function(){setLink(imgLink[0]);}); //最後のSpriteがframeに入ったら var lastChild:String = "img"+ (imgUrl.length-1); getChildByName(lastChild).addEventListener(Event.ENTER_FRAME,function(){ //オブジェクトが移動を始める for(var k:int=0;k<imgUrl.length;k+=1){ getChildByName("img"+k).x -=10; if(getChildByName("img"+k).x==-100){ getChildByName("img"+k).x = 560; } } }); //リンク設置関数 function setLink(setUrl):void{ //URLRequestを代入 var url:URLRequest = new URLRequest(setUrl); //ページ移動 navigateToURL(url,"_self"); }

このページの上部へ

Timerでフェードインフェードアウト

SWF

ActionScript

import flash.display.MovieClip; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.events.MouseEvent; import flash.display.Sprite; //テキスト生成 var n:int = 0; for(var i:int;i<6;i+=1){ var sp:Sprite = new Sprite(); //フォントサイズを指定 テキストをaddChild前に処理 var btn = new TextField(); var fmt:TextFormat = new TextFormat(); fmt.size = 14; btn.defaultTextFormat = fmt; sp.name = "btn"+n; btn.text = "btn"+n; btn.textColor = 0x0000ff; sp.addChild(btn); addChildAt(sp,n); sp.x = n * 40; sp.y = 245; btn.mouseEnabled = false;//テキストフォールドのマウスカーソルを変更させるにはmouseEnabledをfalseに制定 sp.buttonMode = true; n+=1; } //イベントをセット getChildByName("btn0").addEventListener(MouseEvent.MOUSE_UP,function(){changeImg("no1.png");}); //画像読み込み var imgSp:Sprite = new Sprite(); var url:String = "no1.png"; var imageUrl:URLRequest = new URLRequest(url); var img:Loader = new Loader(); imgSp.name = "visual"; img.load(imageUrl); imgSp.addChild(img) addChild(imgSp); //画像再読み込み imgSpの子要素を削除した後、新しい画像を挿入 function changeImg(param){ var chUrl:String = param; var chImageUrl:URLRequest = new URLRequest(chUrl); var chImg:Loader = new Loader(); chImg.load(chImageUrl); chImg.alpha = 0; //表示されている画像のアルファ値を0になるまでTimerで減算。0になったら新しい画像をアルファ値0で挿入し、1になるまで加算。1になったら処理終了 var timer:Timer=new Timer(50,0); var flg:Boolean = false; timer.addEventListener(TimerEvent.TIMER, function(){ if(imgSp.getChildAt(0).alpha>0 && flg == false){ imgSp.getChildAt(0).alpha -= 0.2; } else{ flg = true; imgSp.removeChildAt(0); imgSp.addChildAt(chImg,0); imgSp.getChildAt(0).alpha += 0.1; if(imgSp.getChildAt(0).alpha>1){ timer.stop(); flg = false; } } }); timer.start(); }

このページの上部へ

外部テキストファイルを読み込む

SWF

ActionScript

import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; var loader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest("swf/amenimo.txt"); var field:TextField = new TextField(); field.wordWrap = true; var fmt:TextFormat = new TextFormat(); fmt.size = 12; fmt.font = "_ゴシック"; field.defaultTextFormat = fmt; //読み込みが完了したら関数を実行 loader.addEventListener(Event.COMPLETE,function(){ var setData:String = loader.data; field.text = setData; addChild(field); field.width = 550; field.height = 260; }); //テキストファイルの読み込み loader.load(req);

このページの上部へ

外部XMLファイルを読み込む

SWF

ActionScript

//テキストフォールド生成 var field:TextField = new TextField(); field.wordWrap = true; var fmt:TextFormat = new TextFormat(); fmt.size = 12; fmt.font = "_ゴシック"; field.defaultTextFormat = fmt; field.width = 200; field.height = 20; //リクエスト生成 var loader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest("/blog/atom.xml"); //デフォルトの名前空間を設定 var atom:Namespace = new Namespace("http://www.w3.org/2005/Atom"); default xml namespace = atom; //読み込みが完了したら関数を実行 loader.addEventListener(Event.COMPLETE, function(){ var setXML:XML = new XML(loader.data); field.text = setXML.title[0]; addChild(field); }); //エラーハンドリング loader.addEventListener(IOErrorEvent.IO_ERROR, function(){ }); //XMLの読み込み loader.load(req);

このページの上部へ

JavaScriptを呼び出す 変数を渡す

SWF

HTML

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="250" height="40" id="learning5" align="middle"> <param name="FlashVars" value="variable=時代は変わるラガーは変わるな"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="swf/learning5.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="swf/learning5.swf" quality="high" bgcolor="#ffffff" width="250" height="40" name="learning5" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_jp" FlashVars="variable=時代は変わるラガーは変わるな" /> </object>

ActionScript

var fmt:TextFormat = new TextFormat(); fmt.size = 14; fmt.font = "_ゴシック"; var btn = new TextField(); btn.defaultTextFormat = fmt; btn.width = 250; var sp:Sprite = new Sprite(); sp.name = "btn"; btn.text = "Clickするとalertがでるよ"; btn.textColor = 0x0000ff; sp.addChild(btn); addChild(sp); btn.mouseEnabled = false;//テキストフォールドのマウスカーソルを変更させるにはmouseEnabledをfalseに制定 sp.buttonMode = true; sp.addEventListener(MouseEvent.CLICK, function(){ //JavaScriptの呼び出し ExternalInterface.call("alert","パパパパパフィー"); }); //変数を受け取る var flashVars:Object = this.loaderInfo.parameters; var variable:String = flashVars['variable']; var txt = new TextField(); txt.defaultTextFormat = fmt; txt.text = variable; addChild(txt); txt.width = 250; txt.y = 20;

このページの上部へ

PHPにPOSTしてみる

SWF

ActionScript

var req:URLRequest = new URLRequest (file path); //POST送信 req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送信パラメータ variables.name0 = "柿の種ふりかけ茶漬け"; req.data = variables; var loader:URLLoader = new URLLoader (req); loader.dataFormat = URLLoaderDataFormat.VARIABLES; //データ送信後、値を取得 loader.addEventListener(Event.COMPLETE, function (event:Event):void{ //戻り値を変数に格納 var printdata:URLVariables = new URLVariables(event.target.data); //テキスト生成 var paragraph = new TextField; paragraph.width = 200; paragraph.height = 20; paragraph.y = 3; paragraph.text = (printdata.rData); addChild(paragraph); } ); //データ送信 loader.load(req);

PHP

$comment = $_POST['name0']; print "rData=" . $comment;

このページの上部へ

Matrixを使ってみる

プロパティ、ビルトイン関数 - ActionScript 3.0 コンポーネントリファレンスガイド

SWF

ActionScript

var defY:Number = 30; var grand:Sprite = new Sprite(); grand.y = defY; var sp:Sprite = new Sprite(); var grp:Graphics = sp.graphics; grp.lineStyle(0,0xFFAAAA,1); grp.beginFill(0xFFAAAA,15); grp.drawRect(0,0,200,100); sp.name = "obj"; grand.addChild(sp); addChild(grand); var labels:Array = ["移動","拡縮","回転","傾斜","リセット"]; var n:int = 0; var pos:int = 0; for(var i:int;i<5;i+=1){ var unit:Sprite = new Sprite(); //フォントサイズを指定 テキストをaddChild前に処理 var btn = new TextField(); var fmt:TextFormat = new TextFormat(); fmt.size = 14; btn.defaultTextFormat = fmt; unit.name = "btn"+n; btn.text = labels[n]; btn.textColor = 0x0000ff; unit.addChild(btn); addChildAt(unit,n); unit.x = n * 40; unit.y = 1; btn.mouseEnabled = false;//テキストフォールドのマウスカーソルを変更させるにはmouseEnabledをfalseに制定 unit.buttonMode = true; n+=1; } //移動 getChildByName("btn0").addEventListener(MouseEvent.MOUSE_UP,function(){mtrxTsrate(grand,100,10);}); function mtrxTsrate(target:Sprite,tx:Number,ty:Number){ var mtrx:Matrix = target.transform.matrix; mtrx.translate(tx,ty); target.transform.matrix = mtrx; } //拡大縮小 getChildByName("btn1").addEventListener(MouseEvent.MOUSE_UP,function(){mtrxScale(sp,2,1.8);}); function mtrxScale(target:Sprite,sx:Number,sy:Number){ var mtrx:Matrix = target.transform.matrix; mtrx.scale(sx,sy); target.transform.matrix = mtrx; } //回転 getChildByName("btn2").addEventListener(MouseEvent.MOUSE_UP,function(){mtrxRotate(sp,10);}); function mtrxRotate(target:Sprite,c:Number){ var mtrx:Matrix = target.transform.matrix; var rad = retRad(c); mtrx.rotate(rad); target.transform.matrix = mtrx; } //傾斜 var c:Number = 0; getChildByName("btn3").addEventListener(MouseEvent.MOUSE_UP,function(){mtrxInclination(sp);}); function mtrxInclination(target:Sprite){ var mtrx:Matrix = target.transform.matrix; c += 20; mtrx.c = Math.tan(retRad(c)); target.transform.matrix = mtrx; } //リセット getChildByName("btn4").addEventListener(MouseEvent.MOUSE_UP,function(){reset(grand,sp);}); function reset(targetG:Sprite,target:Sprite){ var mtrx:Matrix = new Matrix(); targetG.transform.matrix = mtrx; targetG.y = defY; target.transform.matrix = mtrx; } //ラジアンに変換 function retRad(param:Number):Number{ return param * (Math.PI/180); }

このページの上部へ

addEventListener の伝播を使ってみる

SWF

ActionScript

package{ import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.Event; public class Learning20 extends Sprite{ var spArray:Array = new Array(); var canvas:Sprite; public function Learning20(){ canvas = new Sprite(); addChild(canvas); for(var i:int;i<6;i+=1){ var sp = new Sprite(); sp.x = (i*60); spArray.push(sp); var spGraph = sp.graphics; spGraph.beginFill(0xFFFFFF*Math.random(),15); spGraph.drawRect(0,0,50,50); canvas.addChild(sp); } canvas.addEventListener(MouseEvent.MOUSE_OVER,overFunc); canvas.addEventListener(MouseEvent.MOUSE_OUT,outFunc); canvas.addEventListener(MouseEvent.MOUSE_DOWN,downFunc); canvas.addEventListener(MouseEvent.MOUSE_OUT,moveFunc); //canvas.mouseChildren = false; } private function overFunc(e:MouseEvent){ e.target.scaleY = 1.5; } private function outFunc(e:MouseEvent){ e.target.scaleY = 1; } private function downFunc(e:MouseEvent){ e.target.alpha -= 0.1; } private function moveFunc(e:MouseEvent){ e.target.alpha = 1; } } }