yoppa.org


Web動画表現技法 2009

第8回:ActionScript3.0:MovieClipを操作する

MovieClipシンボルとプロパティ

  • ステージ上に配置したMovieClipシンボル
    • 様々な「性質」を持つ
    • 個々のMovieClipが保持してる性質を、「プロパティ」と呼ぶ
    • MovieClipのプロパティを操作することで、様々な表現が可能となる

MovieClipシンボルのプロパティ

  • MovieClipシンボルは非常に多くのプロパティを持つ
  • 表現の部分に関係する代表的なプロパティを抜粋
    • x : 親 DisplayObjectContainer のローカル座標を基準にした DisplayObject インスタンスの x 座標を示します
    • y : 親 DisplayObjectContainer のローカル座標を基準にした DisplayObject インスタンスの y 座標を示します
    • width:表示オブジェクトの幅を示します(ピクセル単位)
    • height:表示オブジェクトの高さを示します(ピクセル単位)
    • scaleX:基準点から適用されるオブジェクトの水平スケール(パーセンテージ)を示します。
    • scaleY:オブジェクトの基準点から適用されるオブジェクトの垂直スケール(percentage)を示します。
    • rotation:DisplayObject インスタンスの元の位置からの回転角を度単位で示します。
    • alpha:指定されたオブジェクトのアルファ透明度値を示します
    • blendMode : 使用するブレンドモードを指定する BlendMode クラスの値です

MovieClipのプロパティの操作1 – 位置(x, y)

  • 1フレーム目のステージに以下の要素を配置
    • MovieClip:インスタンス名「mc」
    • ボタン:インスタンス名「top」
    • ボタン:インスタンス名「bottom」
    • ボタン:インスタンス名「left」
    • ボタン:インスタンス名「right」
  • 1フレーム目に以下のスクリプトを記述
this.left.addEventListener(MouseEvent.CLICK, leftClickHandler);
this.right.addEventListener(MouseEvent.CLICK, rightClickHandler);
this.top.addEventListener(MouseEvent.CLICK, topClickHandler);
this.bottom.addEventListener(MouseEvent.CLICK, bottomClickHandler);
function leftClickHandler(e:MouseEvent):void
{
this.mc.x -= 5;
}
function rightClickHandler(e:MouseEvent):void
{
this.mc.x += 5;
}
function topClickHandler(e:MouseEvent):void
{
this.mc.y -= 5;
}
function bottomClickHandler(e:MouseEvent):void
{
this.mc.y += 5;
}

MovieClipのプロパティの操作2 – 大きさ(scaleX, scaleY)

  • 1フレーム目のステージに以下の要素を配置
    • MovieClip:インスタンス名「mc」
    • ボタン:インスタンス名「zoomInX」
    • ボタン:インスタンス名「zoomOutX」
    • ボタン:インスタンス名「zoomInY」
    • ボタン:インスタンス名「zoomOutY」
  • 1フレーム目に以下のスクリプトを記述
this.zoomInX.addEventListener(MouseEvent.CLICK, zoomInXHandler);
this.zoomOutX.addEventListener(MouseEvent.CLICK, zoomOutXHandler);
this.zoomInY.addEventListener(MouseEvent.CLICK, zoomInYHandler);
this.zoomOutY.addEventListener(MouseEvent.CLICK, zoomOutYHandler);
function zoomInXHandler(e:MouseEvent):void
{
this.mc.scaleX *= 1.1;
}
function zoomOutXHandler(e:MouseEvent):void
{
this.mc.scaleX /= 1.1;
}
function zoomInYHandler(e:MouseEvent):void
{
this.mc.scaleY *= 1.1;
}
function zoomOutYHandler(e:MouseEvent):void
{
this.mc.scaleY /= 1.1;
}

MovieClipをアニメーションする1:位置を移動(x, y)

  • EnterFrameイベントを使用する
    • フレームが更新するたびに呼び出されるイベント
    • processingで言うところの、draw()関数
  • 1フレーム目のステージに以下の要素を配置
    • MovieClip:インスタンス名「mc」
    • ボタン:インスタンス名「top」
    • ボタン:インスタンス名「bottom」
    • ボタン:インスタンス名「left」
    • ボタン:インスタンス名「right」
  • 1フレーム目に以下のスクリプトを記述
var speedX:Number=0;
var speedY:Number=0;
this.left.addEventListener(MouseEvent.CLICK, leftClickHandler);
this.right.addEventListener(MouseEvent.CLICK, rightClickHandler);
this.top.addEventListener(MouseEvent.CLICK, topClickHandler);
this.bottom.addEventListener(MouseEvent.CLICK, bottomClickHandler);
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function leftClickHandler(e:MouseEvent):void {
speedX-=1;
}
function rightClickHandler(e:MouseEvent):void {
speedX+=1;
}
function topClickHandler(e:MouseEvent):void {
speedY-=1;
}
function bottomClickHandler(e:MouseEvent):void {
speedY+=1;
}
function enterFrameHandler(e:Event):void {
this.mc.x += speedX;
this.mc.y += speedY;
if(this.mc.x < 0 || this.mc.x > stage.stageWidth){
speedX *= -1;
}
if(this.mc.y < 0 || this.mc.y > stage.stageHeight){
speedY *= -1;
}
}

MovieClipをアニメーションする2:回転(rotation)

  • 1フレーム目のステージに以下の要素を配置
    • MovieClip:インスタンス名「mc」
    • ボタン:インスタンス名「speedUp」
    • ボタン:インスタンス名「speedDown」
  • 1フレーム目に以下のスクリプトを記述
var speed:Number=0;
this.speedUp.addEventListener(MouseEvent.CLICK, speedUpHandler);
this.speedDown.addEventListener(MouseEvent.CLICK, speedDownHandler);
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function speedUpHandler(e:MouseEvent):void {
speed += 1;
}
function speedDownHandler(e:MouseEvent):void {
speed -= 1;
}
function enterFrameHandler(e:Event):void {
this.mc.rotation += speed;
}

MovieClipをアニメーションする3:ダブル回転(rotation)

  • ムービークリップを入れ子状に配置してみる
  • 1フレーム目のステージに以下の要素を配置
    • MovieClip:インスタンス名「mc」
    • MovieClip:インスタンス名「mc」の中にさらにMovieClip「mc2」を貼る
    • ボタン:インスタンス名「speedUp」
    • ボタン:インスタンス名「speedDown」
    • ボタン:インスタンス名「speedUp2」
    • ボタン:インスタンス名「speedDown2」
  • 1フレーム目に以下のスクリプトを記述
var speed:Number=0;
var speed2:Number=0;
this.speedUp.addEventListener(MouseEvent.CLICK, speedUpHandler);
this.speedDown.addEventListener(MouseEvent.CLICK, speedDownHandler);
this.speedUp2.addEventListener(MouseEvent.CLICK, speedUpHandler2);
this.speedDown2.addEventListener(MouseEvent.CLICK, speedDownHandler2);
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function speedUpHandler(e:MouseEvent):void {
speed += 1;
}
function speedDownHandler(e:MouseEvent):void {
speed -= 1;
}
function speedUpHandler2(e:MouseEvent):void {
speed2 += 1;
}
function speedDownHandler2(e:MouseEvent):void {
speed2 -= 1;
}
function enterFrameHandler(e:Event):void {
this.mc.rotation += speed;
this.mc.mc2.rotation += speed2;
}