SlideShare a Scribd company logo
「Flashの3D機能を使ってみよう」


2011.8.21(日)
場所:スターバックスセミナールーム
特別協賛:ライフサウンド株式会社様




           FLASHUP#9
               orange-suzuki.com 鈴木克史
                                        1
本日のメニュー




orange-suzuki.com
                          2
1.   Flashの3D機能

2.   タイムラインを使った簡単なアニメーションを作る

3.   スクリプトを使った簡単なアニメーションを作る




                               3
Flashの3D機能




orange-suzuki.com
                             4
Flashの3D機能
①3D回転ツール、3D移動ツールを使って感覚的に変更できる。




                                 5
Flashの3D機能
②遠近の角度を変更することで、カメラの画角を変更できる。




 角度:55     角度:100   角度:170

                               6
Flashの3D機能
③動きを確認しながらトゥイーンアニメーションを作成できる。




                                7
タイムラインを使った簡単なアニメーション




                       8
ムービークリップの作成と
                              3D回転
                           (box1.fla)




orange-suzuki.com
                                    9
ムービークリップの作成と3D回転
①正方形を作成します。




                   10
ムービークリップの作成と3D回転
②シンボルに変換します。




          ショートカットキー F8

                         11
ムービークリップの作成と3D回転
③40フレーム目にフレームを挿入します。




           ショートカットキー F5   12
ムービークリップの作成と3D回転
④レイヤーにモーショントゥイーンを作成します。




          ショートカットキー F5    13
ムービークリップの作成と3D回転
⑤10フレーム目、30フレーム目にキーフレームを作成します。




           ショートカットキー F6          14
ムービークリップの作成と3D回転
⑥3D回転ツールを使って、四角いグラフィックを回転させます。



               ・中心点を正方形の端に移動させる
               ・緑のラインをドラッグする




                                  15
ムービークリップの作成と3D回転
⑦タイムラインで動きを確認します。




                    16
ムービークリップを
                       並べてみよう
                        (box2.fla)




orange-suzuki.com
                                 17
ムービークリップを並べてみよう
①正方形を作成し、boxという名前のシンボルに変換します。




                                18
ムービークリップを並べてみよう
②boxを選択した状態で、さらにシンボルに変換し、
  box_animationという名前のシンボルに変換します。




                                   19
ムービークリップを並べてみよう
③ box_animationをダブルクリック、Boxアニメーションを編集しま
 す。




     ↑タイムラインの現在位置




                     ↑ライブラリーの状態




                                          20
ムービークリップを並べてみよう
④ box_animationの中で正方形のアニメーションを作成します。




                                       21
ムービークリップを並べてみよう
⑤タイムラインのルート(大元のタイムライン)に戻り、20フレーム目に
 フレームを挿入します。




                                 22
ムービークリップを並べてみよう
⑥タイムラインをコピーし、20~40フレーム目に同じものを配置しま
 す。さらに、20フレーム目のムービークリップの位置を右側にずら
 します。




 タイムラインのコピー:Altキーを押しながらドラッグ
                                    23
ムービークリップを並べてみよう
⑦同様の作業でタイムラインを連ねていきます。作成後、ムービーを確
 認します。(Ctrl+Enter)




                               24
文字を配置してみよう
                         (box3.fla)




orange-suzuki.com
                                  25
文字を配置してみよう
①テキストツールを用いて、テキストを配置します。




                           26
文字を配置してみよう
②一番下のレイヤーの空白フレームに最初の文字を配置
 下から2番目のレイヤーの空白フレームに2番目の文字を配置




                                27
文字を配置してみよう
③同様に続けて文字を配置していきます。作成後、ムービーを確
 認します。(Ctrl+Enter)




                            28
スクリプトを使ってみよう
                           (box4.fla)




orange-suzuki.com
                                    29
スクリプトを使ってみよう
①前回のflaファイルからbox_animationをコピーして新しいflaファイルにコ
 ピーします。




                                               30
スクリプトを使ってみよう
②box_animationをbox_animation2というムービークリップに変換、
 「詳細」ボタンをクリックし、クラス名に「BoxAnimation」と入力します。




                                           31
スクリプトを使ってみよう
③box_animation2を編集します。
 一番下にレイヤーを追加し、テキストを配置します。




                            32
スクリプトを使ってみよう
④テキストフィールドのプロパティを設定します。


 インスタンス名:kana_txt       →

 テキストの種類:ダイナミックテキスト →




 テキストのサイズ :77くらい    →




                            33
スクリプトを使ってみよう
⑤ルートに戻り、レイヤーをガイドに変更します。




                          34
スクリプトを使ってみよう
⑤レイヤーを追加し、そのレイヤーの1フレーム目を選択します。
アクションパネルを開き、いよいよスクリプトを入力します。




                                 35
スクリプトを使ってみよう
⑤ 以下のスクリプトを入力します。入力後、ムービーを確認します。
  (Ctrl+Enter)

 //ムービークリップクラスを使う宣言文
 import flash.display.MovieClip;

 //ムービークリップの生成
 var box:MovieClip = new BoxAnimation();

 //位置の指定
 box.x = 200;
 box.y = 200-60;

 //テキストを設定
 box.kana_txt.text = “ふ";

 //表示する
 addChild(box);
                                           36
関数を使ってみよう その1
                           (box5.fla)




orange-suzuki.com
                                    37
関数を使ってみよう その1
①前回作ったflaファイルをコピーし、新しいflaファイルを作ります。
 box_animation2のタイムラインを以下のようにします。
 最後のフレームにタイムラインを止めるスクリプトを追加します。




                                 //追加するスクリプト
                                 stop();



      box_animation2のタイムライン




                                         38
関数を使ってみよう その1
② ルートにあるスクリプトを以下のように変更します。


 import flash.display.MovieClip;

 //Boxを追加する関数
 function addBox(i:uint, kana:String):void
 {
         var box:MovieClip = new BoxAnimation();

         //位置の指定に引数を代入する
         box.x = 0+120*i;
         box.y = 200-60;

         //文字の指定に引数を代入する
         box.kana_txt.text = kana;
         addChild(box);
 }
                                                   39
関数を使ってみよう その1
③ ルートに以下のようにタイムラインを作成し、スクリプトを入力していきます。
 入力後、ムービーを確認します。




 //1フレーム目
 addBox( 0, "よ");
 //20フレーム目
 addBox( 1, “う");
 //40フレーム目
 addBox( 2, “こ");
 //60フレーム目
 addBox( 3, “そ");
 //80フレーム目
 addBox( 4, “!");
 //100フレーム目
 stop();                                 40
関数を使ってみよう その2
                           (box6.fla)




orange-suzuki.com
                                    41
関数を使ってみよう その2
①前回作ったflaファイルをコピーし、新しいflaファイルを作ります。スクリプトを以下
 のように変更します。
import flash.display.MovieClip;

//変数を定義
var message_txt:String = "おはよう!";
var num:uint = 0;

function addBox():void
{
   var box:MovieClip = new BoxAnimation();
   box.x = 0+120*num;
   box.y = 200-60;
   //文字列を変数から取得
   box.kana_txt.text = message_txt.substr(num,1);
   addChild(box);
   //変数numを1増加させる
   num++;
                                                    42
}
関数を使ってみよう その2
②各フレームで呼ぶスクリプトは以下のように変更します。
 全て共通のスクリプトになりました。入力後、ムービーを確認します。


 //1フレーム目
 addBox();
 //20フレーム目
 addBox();
 //40フレーム目
 addBox();
 //60フレーム目
 addBox();
 //80フレーム目
 addBox();
 //100フレーム目
 stop();
                                    43
配列を使ってみよう その1
                           (box7.fla)




orange-suzuki.com
                                    44
配列を使ってみよう その1
①前回作ったflaファイルをコピーし、新しいflaファイルを作ります。
 ルートのタイムラインを以下のようにします。




                                      45
配列を使ってみよう その1
②スクリプトは以下のようにします。

import flash.display.MovieClip;
var message_txt:String = "おはようございます!";
var num:uint = 0;
function addBox():void
{
           var box:MovieClip = new BoxAnimation();

          //大きさの調整
          box.scaleX = 0.5;
          box.scaleY = 0.5;

          //位置の変更
          box.x = 0+box.width*num;
          box.y = 200-box.height/2;

          box.kana_txt.text = message_txt.substr(num,1);
          addChild(box);
          num++;
}
……..次のページに続く                                               46
配列を使ってみよう その1
③タイムラインを使わずに関数が実行できるようになりました。
 入力後、ムービーを確認します。

//Timerクラスを使うため、宣言文を追加
import flash.utils.Timer;
import flash.events.TimerEvent;

//タイマーを定義
// new Timer( 時間の指定(ミリ秒), くりかえし回数);
var timer:Timer = new Timer(1000*16/40, message_txt.length);

//指定時間の経過後に処理を行う
timer.addEventListener(TimerEvent.TIMER, tiemrHandler);

//タイマーを開始する
timer.start();

//指定時間経過後の処理
function tiemrHandler(event:TimerEvent):void
{
           addBox();
}                                                              47
配列を使ってみよう その2
                           (box8.fla)




orange-suzuki.com
                                    48
配列を使ってみよう その2
①スクリプトは以下のように変更します。複数のメッセージが表示できるようになります。
 入力後、ムービーを確認します。

import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;

//メッセージを配列で定義
var messageArray:Array = ["おはようございます!", "コーヒーはいかが?", "おま
ちしてまーす!"];

//文字のインデックス
var num:uint = 0;

//メッセージのインデックス
var index:uint = 0;

//初期化する
init();
                                                           49
配列を使ってみよう その2
//初期化
function init():void
{
           //文字のインデックス
           num=0;

       //表示されているムービークリップを削除する
       while(this.numChildren) this.removeChildAt(0);

       //現在のメッセージを取得
       var message:String = messageArray[index];

       var timer:Timer = new Timer(1000*15/40, message.length+3);
       timer.addEventListener(TimerEvent.TIMER, tiemrHandler);

       //タイマーがすべて完了したときの処理
       timer.addEventListener(TimerEvent.TIMER_COMPLETE, tiemrCompleteHandler);
       timer.start();
}




                                                                                  50
配列を使ってみよう その2
function addBox():void
{
           var box:MovieClip = new BoxAnimation();
           box.scaleX = 0.5;
           box.scaleY = 0.5;
           box.x = 0+box.width*num;
           box.y = 200-box.height/2;

           //idnexを用いて、現在のメッセージを取得
           var message:String = messageArray[index];
           box.kana_txt.text = message.substr(num,1);
           addChild(box);
           num++;
}

//一度のタイマー完了後に呼ばれる
function tiemrHandler(event:TimerEvent):void{
            addBox();
}

//全タイマー完了後に呼ばれる
function tiemrCompleteHandler(event:TimerEvent):void{
            //メッセージのインデックスを次へ送る (三項演算子を使用)
            index = ++index>messageArray.length-1 ? 0 : index ;
            //初期化
            init();
}                                                                 51
作例の解説



orange-suzuki.com
                            52
スクリプトを使ったアニメーション




                   53
画像を回転させる




orange-suzuki.com
                               54
画像を回転させる

①正方形を作成し、barという名前のシンボルに変換します。




                                55
画像を回転させる

②barシンボルの中に画像を読み込みます。photo1.jpgを選択すると、
 自動で連番画像が読み込まれます。(3~5フレーム目は削除しても
 OKです。)




                                     56
画像を回転させる

③photoをbarというムービークリップに変換、barを編集します。
 レイヤーを追加し、長方形(x:-40, y:0, 幅:80,高さ:300)を配置します。
 その後、そのレイヤーをマスクレイヤーにします。




                                          57
画像を回転させる

④photoのx座標を-40に設定。photoのインスタンス名を「photo」と
 します。




                                       58
画像を回転させる

⑤ルートのタイムラインに戻り、barシンボルのインスタンス名に
 「bar」と入力します。




                                  59
画像を回転させる
⑥ ルートのタイムラインに以下のスクリプトを入力します。入力後、ムービーを確認します。

import flash.events.Event;
import flash.display.MovieClip;
//アニメーションさせる
this.addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void{
    //回転させる
    bar.rotationY += 9;
    //0~360度の範囲にする
    bar.rotationY %= 360;

    //切り替えるムービークリップを変数に格納しておく
    var photo:MovieClip = bar.photo;

    //回転角度によって写真を切り替える
    // 90°~270°の時は次の写真にする
    if(bar.rotationY>=90 && bar.rotationY<270){
             photo.alpha = 0.5;
             photo.gotoAndStop(2);
    }else{
             photo.alpha = 1;
             photo.gotoAndStop(1);
    }
}                                                 60
クラスを使ってみよう




orange-suzuki.com
                             61
クラスを使ってみよう

①前回のflaファイルをコピーし、新しいflaファイルを作成します。
 ルートのスクリプトレイヤーを削除し、ムービークリップが入ったレ
 イヤーはガイドレイヤーにします。




                                 62
クラスを使ってみよう
②ActionScript設定のボタン(スパナのアイコン)をクリックし、
  詳細設定パネルを開きます。ソースパスに、「./lib」と入力します。
 libフォルダにあるクラスライブラリが使えるようになります。




                                   63
クラスを使ってみよう
③ドキュメントクラスを作成します。ステージのプロパティの、クラス
 の箇所に「Main」と入力、右側の鉛筆アイコンをクリックします。
 以下のようなクラスファイルが自動で作られます。(CS5以上の場合)




                                 64
クラスを使ってみよう
④クラスを編集します。

 ・Main.as
 ・Bar.as
  (詳細はクラスファイルを参照します。)




                        65

More Related Content

PDF
【Unite Tokyo 2018】誘導ミサイル完全マスター
PDF
Html canvas shooting_and_performanceup
PDF
【Unity道場 2月】シェーダを書けるプログラマになろう
PDF
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
PDF
Canvas de shooting 制作のポイント
PDF
Flashup13 Basic Training of Flare3D
PDF
Flashup 12 Basic Training of Away3D
PDF
2012 ce116 crowbar_snct_shirai
【Unite Tokyo 2018】誘導ミサイル完全マスター
Html canvas shooting_and_performanceup
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
Canvas de shooting 制作のポイント
Flashup13 Basic Training of Flare3D
Flashup 12 Basic Training of Away3D
2012 ce116 crowbar_snct_shirai

What's hot (6)

PDF
Flashup14 Away3d basic material setting
PPTX
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
ODP
Boost9 session
PDF
㉑CSSでアニメーション!その2
PPTX
非同期処理の基礎
PDF
【Unity道場】ゲーム制作に使う数学を学習しよう
Flashup14 Away3d basic material setting
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Boost9 session
㉑CSSでアニメーション!その2
非同期処理の基礎
【Unity道場】ゲーム制作に使う数学を学習しよう
Ad

Viewers also liked (8)

PDF
Fi gq-gcmu-004-015 tutorial 2 [modo de compatibilidad]
PPTX
Tutorial9 teorema de pitagoras
PPTX
Presentation2
PDF
A day in the life of Mind Body Motion
PDF
الألوان الصناعية و صحة الطفل
PDF
Jalan realisasi-pembaruan-desa
PDF
Case study electrabel-do my care
PPT
Crear Un Bloc Amb Wordpress
Fi gq-gcmu-004-015 tutorial 2 [modo de compatibilidad]
Tutorial9 teorema de pitagoras
Presentation2
A day in the life of Mind Body Motion
الألوان الصناعية و صحة الطفل
Jalan realisasi-pembaruan-desa
Case study electrabel-do my care
Crear Un Bloc Amb Wordpress
Ad

Similar to Flashup 9 (20)

PDF
How to use animation packages in R(Japanese)
PDF
OpenCVの拡張ユーティリティ関数群
PDF
animation1.0
PDF
ActionScriptを使わないFlash勉強会 #1(前日版)
PDF
cocos2d-xとCocosBuilderでゲームを作ってみよう
PDF
openFrameworks Workshop in Kanazawa v001
PPTX
T69 c++cli ネイティブライブラリラッピング入門
PDF
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
PPTX
T90 きっと怖くないmvvm & mvpvm
PPTX
OpenCVを用いた画像処理入門
KEY
Objc lambda
KEY
Arctic.js
PDF
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
PDF
cocos2d-x公開講座 in 鹿児島
PDF
文献紹介:VideoMix: Rethinking Data Augmentation for Video Classification
PPTX
大規模分散システムの現在 -- Twitter
PDF
Boost tour 1_40_0
PPT
Core Animation 使って見た
PDF
板ポリだけで めちゃカッコいい グラフィックスを出す!
PPTX
GoF デザインパターン 2009
How to use animation packages in R(Japanese)
OpenCVの拡張ユーティリティ関数群
animation1.0
ActionScriptを使わないFlash勉強会 #1(前日版)
cocos2d-xとCocosBuilderでゲームを作ってみよう
openFrameworks Workshop in Kanazawa v001
T69 c++cli ネイティブライブラリラッピング入門
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
T90 きっと怖くないmvvm & mvpvm
OpenCVを用いた画像処理入門
Objc lambda
Arctic.js
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
cocos2d-x公開講座 in 鹿児島
文献紹介:VideoMix: Rethinking Data Augmentation for Video Classification
大規模分散システムの現在 -- Twitter
Boost tour 1_40_0
Core Animation 使って見た
板ポリだけで めちゃカッコいい グラフィックスを出す!
GoF デザインパターン 2009

Flashup 9