電子書籍の厳選無料作品が豊富!

AS2.0からAS3.0にうまく変換できません。

はじめまして、ActionScriptを勉強し始めたばかりの初心者です。

http://blog.bonkura.jp/2008/07/flash-4.html
のページのスクリプトをas3.0に直そうと思って勉強しながらやってみたんですが、
どうもうまくいきません。

書いてみたコードは以下です。
だれか添削してもらえると助かります。宜しくお願いします!

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.LEFT;

var bg:MovieClip = new MovieClip();
this.setChildIndex(bg, 1);

var bgPic:MovieClip = new MovieClip();
this.setChildIndex(bgPic, 0);

bgPattern();


function bgPattern():void{

var myMcl:Loader = new Loader();
var oListener:Object = new Object();
var UrL:URLRequest = new URLRequest();
UrL.url = "http://blog.bonkura.jp/2008/07/08/swf/bg.jpg";

myMcl.addChild(oListener);
myMcl.load(UrL, bgPic);

oListener.addEventListener( Event.COMPLETE, StageSize);
for(var i:Number=0; i<stage.width/100; i++){
for(var j:Number=0; j<stage.height/100; j++){
var bgP:String = "bg"+i+j;
bg.addChild(new (getDefinitionByName(bgP)));
this.setChildIndex(bgP, i+j*100);

bg[bgP].x = i * 100;
bg[bgP].y = j * 100;
}
}
}
var alphaFlag:Boolean = new Boolean();
alphaFlag = true;
bg.addEventListener(Event.ENTER_FRAME, onENTERFrame);
bg.addEventListener(Event.RESIZE, bg.resizeHandler);
stage.addChild(bg);
stage.addChild(bgPic);


function StageSize():void{
bgPic.x = (stage.width/2) - (bgPic.width/2);
bgPic.y = (stage.height/2) - (bgPic.height/2);
}

// イベントリスナー
function onENTERFrame(event:Event) {
if(alphaFlag){
this.alpha -= 5;
if(this.alpha <= 0){
alphaFlag = !alphaFlag;
}
}
else{
this.alpha += 5;
if(this.alpha >= 100){
alphaFlag = !alphaFlag;
}
}
}

function resizeHandler(event:Event = null):void{
bgPattern();
};

A 回答 (1件)

>AS2.0からAS3.0にうまく変換できません



根本的なことを理解しないまま置き換えて変換しようとするより、
まずは元のスクリプトがどういう処理/設計になっているかを
ひとつずつ理解して、それを元に1から組み立ててみることをおすすめします.

>添削
ほぼすべて変更する必要があります.
このため添削は省き、変換した場合の一例をあげておきます.

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

var alphaFlag:Boolean = true;
var bgPic:Sprite = new Sprite();
var myMcl:Loader = new Loader();

myMcl.contentLoaderInfo.addEventListener( Event.COMPLETE, onComplete );
//自前で画像を用意し、とりあえずswfと同じフォルダに入れ、
//その画像へのパスを○○.jpgに入れます
myMcl.load( new URLRequest( "○○.jpg" ));

function onComplete( e:Event ):void {
addChild( myMcl );
addChild( bgPic );
bgPattern( bgPic, myMcl.width, myMcl.height );
resizeHandler();
stage.addEventListener( Event.RESIZE, resizeHandler );
bgPic.addEventListener(Event.ENTER_FRAME, EnterFrameHandler);
}

function EnterFrameHandler( e:Event ):void{
if ( alphaFlag ) {
e.currentTarget.alpha -= 0.05;
if (e.currentTarget.alpha <= 0) {
alphaFlag = !alphaFlag;
}
} else {
e.currentTarget.alpha += 0.05;
if (e.currentTarget.alpha >= 1) {
alphaFlag = !alphaFlag;
}
}
}

function bgPattern( sp:Sprite, w:Number, h:Number ):void {

var bmd:BitmapData = new BitmapData( 4, 4, true, 0x00000000 );
var dot:BitmapData = new BitmapData( 2, 2, false, 0x000000 )
bmd.copyPixels( dot, dot.rect, new Point() );

sp.graphics.beginBitmapFill( bmd, null, true, false );
sp.graphics.drawRect( 0, 0, w, h );
sp.graphics.endFill();
}

function resizeHandler( event:Event = null ):void {
var sw:Number = stage.stageWidth;
var sh:Number = stage.stageHeight;

myMcl.x = ( sw - myMcl.width ) / 2;
myMcl.y = ( sh - myMcl.height ) / 2;

bgPic.x = myMcl.x;
bgPic.y = myMcl.y;
}
    • good
    • 0
この回答へのお礼

ありがとうございました!

頂いたコードを色々と調べて理解したおかげで
やりたかった事が出来ました。

本当にありがとうございました!

お礼日時:2010/04/27 22:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!