- 締切済み
flash初心者で action script 3.0で webサイト
flash初心者で action script 3.0で webサイトを作っているのですが、なかかうまくいきません。 1.60個程のシンボルを配置してそれがじょじょに現れるようにする。 2.60個のシンボルの中から一つを選びクリックすると、クリックしたシンボル以外はステージ外に移動、もしくは消え、 選択したシンボルが、任意のサイズまで拡大される。 3.拡大されたシンボルをクリックすると、元の小さいサイズまで縮小され、残りの消えたシンボルが現れる。 というようなものです。 1はなんとかできたのですが、2.3がどうもうまくいきません。 ちなみに1の式は下記のように書きました。 なにぶんプログラムは初めてなもので、聞きかじったことをなんとか応用してなので、かなり長く汚いかと思われます。 下記の式と60個のボタンシンボルは、1つのムービーシンボル内に格納してあります。それをメインのタイムラインに配置しています。 var flg : Number = 0; var a : Number = 0; var b : Number = 0; var c : Number = 0; var d : Number = 0; (略) var eh : Number = 0; var ei : Number = 0; シンボル1.addEventListener(Event.ENTER_FRAME,function(event){ // ムービークリップを半透明 シンボル1.alpha = a; シンボル2.alpha = b; (略) シンボル58.alpha = eh; シンボル59.alpha = ei; if(flg==0){ a +=0.1;} if(a>0.5){ b += 0.1;} if(b>0.5){ c += 0.1;} (略) if(di>0.5){ ei += 0.1;} if(ei>1){ flg=1} }); それとボタンをクリックして、他のフレームに飛ばす処理も上の式の下に追加で書いてみたのですが、パブリッシュすると TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at MethodInfo-11() というエラーが無限にでてしまいます。 ソースは下記です シンボル1.addEventListener(MouseEvent.CLICK, vans); function vans(event:MouseEvent):void { gotoAndStop(2); } 本当に初心者です。 説明もへたくそですが、どうぞご享受下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- H240S18B73
- ベストアンサー率65% (190/288)
function makeThumb(x:Number,y:Number,w:Number=450,h:Number=300,s:Number=0.08):MovieClip{ var rtn:MovieClip=new MovieClip() with(rtn.graphics){ beginFill(0xBBBBBB+(Math.floor(Math.random()*0xFFFFFF)&0x333333)) drawRect(-w/2,-h/2,w,h) endFill() } rtn.x=x rtn.y=y rtn.scaleX=rtn.scaleY=s rtn.inTwnList=new Array() rtn.inTwnList.push(new Tween(rtn,"x",Regular.easeIn,275+(x-275)/2,x,10)) rtn.inTwnList.push(new Tween(rtn,"y",Regular.easeIn,500+y/2,y,10)) rtn.inTwnList.push(new Tween(rtn,"alpha",Regular.easeIn,0,1,10)) rtn.outTwnList=new Array() rtn.outTwnList.push(new Tween(rtn,"x",Regular.easeIn,x,275+(x-275)/2,10)) rtn.outTwnList.push(new Tween(rtn,"y",Regular.easeIn,y,500+y/2,10)) rtn.outTwnList.push(new Tween(rtn,"alpha",Regular.easeIn,1,0,10)) rtn.downTwnList=new Array() rtn.downTwnList.push(new Tween(rtn,"x",Regular.easeIn,275,x,10)) rtn.downTwnList.push(new Tween(rtn,"y",Regular.easeIn,200,y,10)) rtn.downTwnList.push(new Tween(rtn,"scaleX",Regular.easeIn,1,s,10)) rtn.downTwnList.push(new Tween(rtn,"scaleY",Regular.easeIn,1,s,10)) rtn.upTwnList=new Array() rtn.upTwnList.push(new Tween(rtn,"x",Regular.easeIn,x,275,10)) rtn.upTwnList.push(new Tween(rtn,"y",Regular.easeIn,y,200,10)) rtn.upTwnList.push(new Tween(rtn,"scaleX",Regular.easeIn,s,1,10)) rtn.upTwnList.push(new Tween(rtn,"scaleY",Regular.easeIn,s,1,10)) for each(var nm in ["out","in","up","down"]){ for each(var twn in rtn[nm+"TwnList"]){ twn.stop() } } rtn.addEventListener(MouseEvent.CLICK,onClick) rtn.downTwnList[0].addEventListener(TweenEvent.MOTION_FINISH,onFinish) rtn.upTwnList[0].addEventListener(TweenEvent.MOTION_FINISH,onFinish) return rtn }
- H240S18B73
- ベストアンサー率65% (190/288)
2回に分けます Tweenクラス使ってますが 動作は重いし安定しないし TweenMaxなり導入したほうが賢いです import fl.transitions.Tween import fl.transitions.TweenEvent import fl.transitions.easing.Regular var thmList:Array=new Array() var isTweening:Boolean=false var isWatching:Boolean=false for(var i=0;i<60;i++){ thmList.push(addChild(makeThumb((i%10)*50+50,Math.floor(i/10)*50+50))) } function onClick(e){ var nm var mc var twn if(isTweening)return if(isWatching){ for each(mc in thmList)for each(twn in mc[((mc==e.target)?"down":"in")+"TwnList"])twn.start() }else{ for each(mc in thmList)for each(twn in mc[((mc==e.target)?"up":"out")+"TwnList"])twn.start() } isTweening=true } function onFinish(e){ isTweening=false isWatching=!isWatching }
お礼
返答ありがとうございます。 式まで書いて下さってありがとうございます。 なんだか難しそうですね^^; これをお手本にして調べながら理解したいとおもいます。