• 締切済み

tweenクラスを使った明度の調整は可能ですか。

ずっとチカチカと、ちょうど電灯が着いたり消えたりするような効果をMCにつけたいと思い、以下のスクリプトをフレームに書きました。 import mx.transitions.Tween; import mx.transitions.easing.*; var myTween:Tween = new Tween(ball, "_alpha", None.easeNone, 100, 0, 0.2, true); myTween.onMotionFinished = function() { this.yoyo(); }; これでも良いことは良いんですが・・ alphaではなく明度(brightness?)で調整できないものかと思っています。 しかし、対象のMCのプロパティにbrightness等入力しても反応しません。 これまでに、_x , _xscale , alphaくらいは試してこれたのですが、明度は調整できないのでしょうか。 FlashCS3 AS2.0仕様です。 参考サイトをいくつか見てみましたが、alphaについては例が書いてあるのですが、明度がないような気がします。 どなたかご教授いただけませんでしょうか。 よろしくお願いします。

  • Flash
  • 回答数3
  • ありがとう数2

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

一応,ヘルプにありますよ。 「カラーマトリックスフィルタの使用」 Flash CS3 のヘルプ http://livedocs.adobe.com/flash/9.0_jp/main/00000983.html Flash 8 のヘルプ http://livedocs.adobe.com/flash/8_jp/main/00001520.html  →Tween クラスを使用して    インスタンスの明度レベルをアニメーション化するには 上記ヘルプにしたがって スクリプトを書き替えると,次のようになると思います。 (背景は白と想定した場合(アルファ0が白と等しいと想定した場合)です。) ----------------------------------- import flash.filters.ColorMatrixFilter; import mx.transitions.Tween; import mx.transitions.easing.*; ball.watch("brightness", brightnessWatcher, ball); var myTween:Tween = new Tween(ball, "brightness", None.easeNone, 100, 0, 0.2, true); myTween.onMotionFinished = function() { this.yoyo(); }; function brightnessWatcher(prop:String, oldVal:Number, newVal:Number, target_mc:MovieClip):Number { var brightness_array:Array = [1, 0, 0, 0, newVal, 0, 1, 0, 0, newVal, 0, 0, 1, 0, newVal, 0, 0, 0, 1, 0]; target_mc.filters = [new ColorMatrixFilter(brightness_array)]; return newVal; }; ----------------------------------- 明度を変化させるということは, RGB の各オフセット(-255 ~ 255(ColorMatrixFilterでは-100~100)) を同じように変化させるということです。 Tweenクラスに関わらず, 明度をスクリプトで操作するようなサンプルをあまり見かけないのはそのためです。面倒なのです。 それ以上詳しいことは,この筋の専門でないのでよくわかりません。

hiro8358
質問者

お礼

有難うございます。 助かりました。 理由もわかり、本当に勉強になりました。 これは意外と説明されている場所は少ないみたいで、今まで何となくやらないできたのですが、これですっきりです。

  • taku2888
  • ベストアンサー率60% (15/25)
回答No.2

失礼、試したけどあきませんね。 http://www.adobe.com/jp/devnet/flash/articles/graphic_effects_guide_print.html の「brightness.fla」を参考に・・・

hiro8358
質問者

お礼

そうなんですよ。 私も色々試してみたのですが中々良い答えがなかったんです。 資料有難うございます。 勉強してみます。

  • taku2888
  • ベストアンサー率60% (15/25)
回答No.1

_brightness (-100~+100)では、ダメですか。

関連するQ&A

  • Tweenを使って元の位置に戻したい

    はじめまして。 制作環境 flashCS3 アクションスクリプト2.0 Tweenクラスを使ってアニメーションを楽しんでいます。 座標100、200に円(直径75のボタン)を配置し、クリックすると座標300、200に拡大移動できます。 ここまでは動作するのですが、再度クリックして元の位置に戻す方法がわかりません。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; grobal_btn.onRelease = function() { mc_tween = new Tween(grobal_btn, "_xscale", Elastic.easeOut,grobal_btn._xscale, 150, 1, true); mc_tween = new Tween(grobal_btn, "_x", Elastic.easeOut,grobal_btn._x,300, 4, true);//スタートx座標、移動した後の座標 mc_tween = new Tween(grobal_btn, "_yscale", Elastic.easeOut,grobal_btn._yscale, 150, 1, true); mc_tween = new Tween(grobal_btn, "_y", Elastic.easeOut,grobal_btn._y,100 , 4, true);//スタートy座標、移動した後の座標 }

    • ベストアンサー
    • Flash
  • tweenでblurを調整するとき、関係のないMCにまで影響してしまう。

    ステージに2つのMC(インスタンスネームはそれぞれlogo01,logo02)を置き、"logo01に対してのみ"tweenでblurをかけたいと思っています。 ASは以下のように記述しています。 ================================== import flash.filters.BlurFilter; import mx.transitions.Tween; import mx.transitions.easing.*; var myTween:Tween = new Tween(logo01, "blur", None.easeNone, 0, 50, 1, true); myTween.onMotionChanged = function() { logo01._parent.filters = [new BlurFilter(logo01.blur,logo01.blur,1)]; }; ================================== しかし、これでパブリッシュしてみますと関係のないはずのlogo02にまでblurの効果が適用されてしまい、困っています。 今まであまりblurは触れずにやってきたので、ここに来て原因がよくわからずにいます。 どなたか原因及び解決策をご存じの方がいらっしゃいましたらご教授ください。 よろしくお願い致します。 制作環境はFLASH CS3 forWin(AS2.0)です。

    • ベストアンサー
    • Flash
  • ロールオーバーで下画像を表示させる

    ステージを400x400として写真をおきます。 その上に100x100のmcを重ねます。マウスのロールオーバーで次々に画像が現れ 最終的に1枚の写真として見えるようにしたいです。 今はmcが1つですが、これを16個配置したいと思います。 その方法を教えてください。 FLASH CS3 AS2.0で制作しています。 import mx.transitions.*; import mx.transitions.easing.*; my_mc1.onRollOver = function() { TransitionManager.start(my_mc1, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); }

  • ボタンの有効と無効

    FLASH CS3 AS2.0で作っています。始めたばかりの初心者です。 スライドショーを作りました。画像6枚をつなげてインスタンス名をmy_mcとしました。 ボタンを1つ置きインスタンス名をbt1としました。 import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-200, 3, true); }; これで動作はするのですが、Tweenを3秒間で行います。3秒のうち、2秒でボタンを押すと 移動が狂ってしまい、うまくいきません。 押された時の、my_mc._xが200区切りでなくなるためと思います。 ボタンを3秒間というか1画面がスライドするのを完了した時点で、ボタンが押せるように したいのです。どんな方法がありますか、教えてください。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • ActionScript3:Tweenをfor文で割り当てられないのか

    ActionScript3:Tweenをfor文で割り当てられないのか? AS3でaddChildでMovieClipを複数置いてTweenをfor文で割り当てるということをやろうとしているのですが、どうしても順番で最後のMovieClipしか動きません。 以下のようにコーディングしてボタンを5個を並べてマウスオーバーするとTweenアニメで動き、またアウトするとTweenアニメで元の位置に戻るというものを作りたいのですが、5番目のボタンしか動きません。Tweenはfor文で割り当てられないのでしょうか? //クラスのインポート import fl.transitions.Tween; import fl.transitions.TweenEvent; import fl.transitions.easing.*; //ボタン配置 for (var i:uint=1; i<6; i++) { var BtnName:String="btn0"+i; var BtnNumber:Class=getDefinitionByName(BtnName) as Class; var Btn:MovieClip = new BtnNumber(); addChild(Btn); Btn.x=10+Btn.width/2+(Btn.width+10)*(i-1); Btn.y=46+Btn.height/2; Btn.buttonMode=true; Btn.id=i; ←idというプロパティを付けてもダメでした Btn.addEventListener(MouseEvent.ROLL_OVER, RollOverEv); Btn.addEventListener(MouseEvent.ROLL_OUT, RollOutEv); function RollOverEv(eventObject:MouseEvent):void { BtnTween01=new Tween(Btn,"y",None.easeNone,Bottom,Top,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 if (BtnTween02.isPlaying) { BtnTween01=new Tween(Btn,"y",None.easeNone,BtnTween02.position,Top,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 } } function RollOutEv(eventObject:MouseEvent):void { BtnTween02=new Tween(Btn,"y",None.easeNone,Top,Bottom,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 if (BtnTween01.isPlaying) { BtnTween02=new Tween(Btn,"y",None.easeNone,BtnTween01.position,Bottom,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 } } } //変数色々設定 var BtnTween01:Tween; var BtnTween02:Tween; var Top:uint=Btn.height/2+5; var Bottom:uint=Btn.height/2+46; var MovSpd:Number=0.2; ■環境:ActionScript3、Flashサイズ:w;280xh:100

    • ベストアンサー
    • Flash
  • this.nの記述について

    ムービクリップのa1,a2,a3,a4をロールオーバするとそれぞれ対応する数字のh1,h2,h3,h4のムービクリップのalphaが0から100にtweenを使って動かすことを考えたいと思います。 //初期設定 var obj_array:Array = new Array(); for (var i = 1; i<=4; i++) { obj_array[i] = eval("a"+i); obj_array[i]._alpha = 0; } //ここからロールオーバの操作 import mx.transitions.*; import mx.transitions.easing.*; for (var i = 1; i<=4; i++) { // 各ボタンの固有値 n を設定 this["h"+i].n = i; // 各ボタンの onRollOver 動作定義 this["h"+i].onRollOver = function() { var tween_handler:Object = new Tween("a"+this.n, "_alpha", Strong.easeOut, 0, 100, 1, true); };  しかし、まったく動作しません。理由としては何が考えられるでしょうか。

    • ベストアンサー
    • Flash
  • for文でまとめる

    FLASH CS3 アクション 2.0 Tweenを用いてイーズアウトの5種類をballを使って表現しようとしています。 ステージにball1からball5を置き、ボタンbt1を押すと右方向に移動させます。 //Tweenクラスを使用できるようにインポート import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { //インスタンス「ball」の動きをTweenクラスを使って制御 var myTween1:Tween = new Tween(ball1, "_x", Regular.easeOut, 39, 400, 2, true); var myTween2:Tween = new Tween(ball2, "_x", Strong.easeOut, 39, 400, 2, true); var myTween3:Tween = new Tween(ball3, "_x", Elastic.easeOut, 39, 400, 2, true); var myTween4:Tween = new Tween(ball4, "_x", Back.easeOut, 39, 400, 2, true); var myTween5:Tween = new Tween(ball5, "_x", Bounce.easeOut, 39, 400, 2, true); }; http://okwave.jp/qa/q7042246.htmlの回答で教えていただきましたfor文を 参考にして書き直しをしてみましたがBounce.easeOutのみ動きますが本来のもの とは異なります。どのように変更すればいいのか教えてください。 //Tweenクラスを使用できるようにインポート import mx.transitions.Tween; import mx.transitions.easing.*; var easeList:Array = new Array(); //イージングの種類 easeList[1] = "Elastic.easeOut"; easeList[2] = "Strong.easeOut"; easeList[3] = "Elastic.easeOut"; easeList[4] = "Back.easeOut"; easeList[5] = "Bounce.easeOut"; bt1.onRelease = function() { for (var i:Number = 1; i<=5; i++) { _root["ball"+i]; for (var i:Number = 1; i<=5; i++) { easeList[i+1]; //インスタンス「ball」の動きをTweenクラスを使って制御 var myTween = new Tween(_root["ball"+i], "_x", easeList[i+1], 39, 400, 2, true); } } };

    • ベストアンサー
    • Flash
  • AS3 mc0~5をまとめて処理する

    AS3初心者です。 forにてmc0~5をまとめて処理したいのですが、 下記スクリプトで、function内mc0の書き換え方が分かりません。 よろしくお願いします。 ///////////////////////////////////////// import fl.transitions.easing.Regular; import fl.transitions.TweenEvent; var twObj:Tween; for(var i:int=0;i<=5;i++){ this["mc"+i].addEventListener(MouseEvent.ROLL_OVER, hiraku); this["mc"+i].addEventListener(MouseEvent.ROLL_OUT, modoru); } function hiraku(eventObj:MouseEvent):void { //mc0を["mc"+i]としまとめて処理したい twObj=new Tween(mc0,"rotation",Regular.easeInOut,0,30,1,true); } function modoru(eventObj:MouseEvent):void { //mc0を["mc"+i]としまとめて処理したい twObj=new Tween(mc0,"rotation",Regular.easeInOut,30,0,1,true); } //////////////////////////////////////////

    • ベストアンサー
    • Flash
  • AS3.0

    ボタン(btn_start)を押したらMC(main1)が動く指定をしたつもりですが ボタンを押すとmain1が消えてしまいます。 間違っている部分がお分かりになる方、宜しくお願い致します。 import fl.transitions.Tween; import fl.transitions.easing.*; var main_uptween:Tween; btn_start.addEventListener(MouseEvent.CLICK,main_start); function main_start(event:MouseEvent):void { main1.addEventListener(Event.ENTER_FRAME,main_up); } function main_up(event:Event):void { main_uptween = new Tween(main1, "y", Bounce.easeOut, 400, 10, 4, true); }

  • 100種類の画像をランダムに読み込みたい(AS2)

    現在下記のようなスクリプトを書いている状態なのですが、 ここからさらに100種類の画像をランダムに読み込み、表示できるようにしたいと思っています。 あと、すでにスライドはするようになってはいるのですが、たまに読み込みが間に合わず空白ができてしまいます。解決するにはスピードを遅くするしかないものなのでしょうか? 一応他の情報も記しておきます。 ・img フォルダ内に連番で100枚の画像ファイルを保存している ・リンク先はLink.asという名前で、そこに100種類のURLを記述している ・PC環境:CS5 AS2.0 Flash Player8 Mac環境 Flashの勉強しはじめたばかりで苦戦しております。 どなたかご教授のほどをよろしくお願いいたします。 import mx.transitions.Tween; import mx.transitions.easing.*; var num:Number = 10; var bar_h:Number = 200; var bar_w:Number = 150; var bar_n:Number = 10; var margin:Number = 0; var lag:Number = 1000; var speed:Number =1; var transMode:Boolean = true; for (i=1; i<=num; i++) { mc = this.createEmptyMovieClip("p"+i, i); mc.createEmptyMovieClip("inner",i); mc.inner.loadMovie("img/p"+i+".jpg"); mc._x = margin + (bar_w+margin)*(i-2); mc._y = 0; mc._alpha = 100; mc.n = i; mc.onRollOver = rollover; mc.onRollOut = rollout; mc.onRelease = releas; } function rollover() { this._alpha = 100; transMode = false; } function rollout() { this._alpha = 100; transMode = true; } function releas() { transMode = true; url = _root["link"+this.n]; getURL(url); } function bar_trans() { if (transMode) { for (i=1; i<=num; i++) { bar_mc = _root["p"+i]; bar_mc.x0 = bar_mc._x; if (bar_mc.x0>margin + (margin+bar_w)*(num-3 )) { bar_mc._visible = false; bar_mc.targetx = - bar_w; } else { bar_mc._visible = true; bar_mc.targetx = margin + bar_w + bar_mc.x0; } myTween(bar_mc); } } } ID = setInterval(bar_trans, lag); function myTween(bar_mc) { new Tween(bar_mc, "_x", Regular.easeOut, bar_mc.x0, bar_mc.targetx, speed, true); } #include "Links.as"

    • ベストアンサー
    • Flash

専門家に質問してみよう