Tweensy - sound
TweensyでSoundTransformのプロパティをアニメーションしてみる。SoundTransformオブジェクトを作ってそのSoundTransformオブジェクトのプロパティをTweensyでTweenするイメージ。で、updateパラメータにそのSoundTransformを適用するSoundChannelインスタンスを指定する。
mp3ファイルはFLASH KITからFreewareを選んで拝借。
TestTweensy_9.swf(音が出ます。)
- ActionScript
- TestTweensy_9.as
- Source
package {
import com.flashdynamix.motion.Tweensy;
import com.flashdynamix.motion.TweensyTimeline;
import fl.motion.easing.Linear;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
[SWF(backgroundColor = 0x000000, width = 600, height = 100, frameRate = 30)]
public class TestTweensy_9 extends Sprite {
private var _sound:Sound;
private var _soundChannel:SoundChannel;
private var _textField:TextField;
public function TestTweensy_9() {
initSound();
initTextField();
initButtons();
}
private function initSound():void{
var urlRequest:URLRequest = new URLRequest('*.mp3'); // パスは省略
_sound = new Sound();
_sound.load(urlRequest);
_soundChannel = _sound.play();
_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
}
private function onSoundComplete(e:Event):void {
_soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundComplete);
_soundChannel = null;
_soundChannel = _sound.play();
_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
}
private function initTextField():void {
var textFormat:TextFormat = new TextFormat('_等幅', 10, 0xffffff);
_textField = new TextField();
_textField.defaultTextFormat = textFormat;
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.y = 50;
addChild(_textField);
}
private function initButtons():void {
var labels:Array = ['VolumeOn', 'VolumeOff', 'PanLeft', 'PanRight'];
var clickHandlers:Array = [onVolumeOnClick, onVolumeOffClick, onPanLeftClick, onPanRightClick];
var i:int, button:Button, x:Number;
for (i = 0; i < 4; i ++) {
x = (button == null)? 0: button.x + button.width;
button = new Button();
button.label = labels[i];
button.x = x;
button.addEventListener(MouseEvent.CLICK, clickHandlers[i]);
addChild(button);
}
}
private function onVolumeOnClick(e:MouseEvent):void {
var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { volume: 1 }, 3, Linear.easeNone, 0, _soundChannel);
timeline.onUpdate = onSoundTransformUpdate;
}
private function onVolumeOffClick(e:MouseEvent):void {
var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { volume: 0 }, 3, Linear.easeNone, 0, _soundChannel);
timeline.onUpdate = onSoundTransformUpdate;
}
private function onPanLeftClick(e:MouseEvent):void {
var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { pan: -1 }, 3, Linear.easeNone, 0, _soundChannel);
timeline.onUpdate = onSoundTransformUpdate;
}
private function onPanRightClick(e:MouseEvent):void {
var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { pan: 1 }, 3, Linear.easeNone, 0, _soundChannel);
timeline.onUpdate = onSoundTransformUpdate;
}
private function onSoundTransformUpdate():void{
var soundTransform:SoundTransform = _soundChannel.soundTransform;
var text:String = '';
text += '_soundChannel.soundTransform.volume = ' + _soundChannel.soundTransform.volume.toString() + '\n';
text += '_soundChannel.soundTransform.pan = ' + _soundChannel.soundTransform.pan.toString();
_textField.text = text;
}
}
}
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filters.BevelFilter;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
internal class Button extends Sprite {
private var _textField:TextField;
public function get label():String { return _textField.text; }
public function set label(value:String):void {
_textField.text = value;
updateFill();
}
public function Button() {
_textField = new TextField();
_textField.defaultTextFormat = new TextFormat('_等幅', 10, 0x333333, true);
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.x = 8;
_textField.y = 4;
addChild(_textField);
filters = [new BevelFilter(1, 45, 0xdddddd, 0xbbbbbb)];
buttonMode = true;
mouseChildren = false;
addEventListener(MouseEvent.MOUSE_UP, onButtonMouseUp);
addEventListener(MouseEvent.MOUSE_DOWN, onButtonMouseDown);
}
private function onButtonMouseUp(e:MouseEvent):void {
var button:Sprite = e.currentTarget as Sprite;
button.filters = null;
button.filters = [new BevelFilter(1, 45, 0xdddddd, 0xbbbbbb)];
}
private function onButtonMouseDown(e:MouseEvent):void {
var button:Sprite = e.currentTarget as Sprite;
button.filters = null;
button.filters = [new BevelFilter(1, 225, 0xdddddd, 0xbbbbbb)];
}
private function updateFill():void {
graphics.clear();
graphics.beginFill(0xCCCCCC);
graphics.drawRect(0, 0, _textField.textWidth + 20, _textField.textHeight + 14);
graphics.endFill();
}
}- package {
- import com.flashdynamix.motion.Tweensy;
- import com.flashdynamix.motion.TweensyTimeline;
- import fl.motion.easing.Linear;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.media.Sound;
- import flash.media.SoundChannel;
- import flash.media.SoundTransform;
- import flash.net.URLRequest;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- [SWF(backgroundColor = 0x000000, width = 600, height = 100, frameRate = 30)]
- public class TestTweensy_9 extends Sprite {
- private var _sound:Sound;
- private var _soundChannel:SoundChannel;
- private var _textField:TextField;
- public function TestTweensy_9() {
- initSound();
- initTextField();
- initButtons();
- }
- private function initSound():void{
- var urlRequest:URLRequest = new URLRequest('*.mp3'); // パスは省略
- _sound = new Sound();
- _sound.load(urlRequest);
- _soundChannel = _sound.play();
- _soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
- }
- private function onSoundComplete(e:Event):void {
- _soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundComplete);
- _soundChannel = null;
- _soundChannel = _sound.play();
- _soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
- }
- private function initTextField():void {
- var textFormat:TextFormat = new TextFormat('_等幅', 10, 0xffffff);
- _textField = new TextField();
- _textField.defaultTextFormat = textFormat;
- _textField.autoSize = TextFieldAutoSize.LEFT;
- _textField.y = 50;
- addChild(_textField);
- }
- private function initButtons():void {
- var labels:Array = ['VolumeOn', 'VolumeOff', 'PanLeft', 'PanRight'];
- var clickHandlers:Array = [onVolumeOnClick, onVolumeOffClick, onPanLeftClick, onPanRightClick];
- var i:int, button:Button, x:Number;
- for (i = 0; i < 4; i ++) {
- x = (button == null)? 0: button.x + button.width;
- button = new Button();
- button.label = labels[i];
- button.x = x;
- button.addEventListener(MouseEvent.CLICK, clickHandlers[i]);
- addChild(button);
- }
- }
- private function onVolumeOnClick(e:MouseEvent):void {
- var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { volume: 1 }, 3, Linear.easeNone, 0, _soundChannel);
- timeline.onUpdate = onSoundTransformUpdate;
- }
- private function onVolumeOffClick(e:MouseEvent):void {
- var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { volume: 0 }, 3, Linear.easeNone, 0, _soundChannel);
- timeline.onUpdate = onSoundTransformUpdate;
- }
- private function onPanLeftClick(e:MouseEvent):void {
- var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { pan: -1 }, 3, Linear.easeNone, 0, _soundChannel);
- timeline.onUpdate = onSoundTransformUpdate;
- }
- private function onPanRightClick(e:MouseEvent):void {
- var timeline:TweensyTimeline = Tweensy.to(_soundChannel.soundTransform, { pan: 1 }, 3, Linear.easeNone, 0, _soundChannel);
- timeline.onUpdate = onSoundTransformUpdate;
- }
- private function onSoundTransformUpdate():void{
- var soundTransform:SoundTransform = _soundChannel.soundTransform;
- var text:String = '';
- text += '_soundChannel.soundTransform.volume = ' + _soundChannel.soundTransform.volume.toString() + '\n';
- text += '_soundChannel.soundTransform.pan = ' + _soundChannel.soundTransform.pan.toString();
- _textField.text = text;
- }
- }
- }
- import flash.display.Graphics;
- import flash.display.Sprite;
- import flash.events.MouseEvent;
- import flash.filters.BevelFilter;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- internal class Button extends Sprite {
- private var _textField:TextField;
- public function get label():String { return _textField.text; }
- public function set label(value:String):void {
- _textField.text = value;
- updateFill();
- }
- public function Button() {
- _textField = new TextField();
- _textField.defaultTextFormat = new TextFormat('_等幅', 10, 0x333333, true);
- _textField.autoSize = TextFieldAutoSize.LEFT;
- _textField.x = 8;
- _textField.y = 4;
- addChild(_textField);
- filters = [new BevelFilter(1, 45, 0xdddddd, 0xbbbbbb)];
- buttonMode = true;
- mouseChildren = false;
- addEventListener(MouseEvent.MOUSE_UP, onButtonMouseUp);
- addEventListener(MouseEvent.MOUSE_DOWN, onButtonMouseDown);
- }
- private function onButtonMouseUp(e:MouseEvent):void {
- var button:Sprite = e.currentTarget as Sprite;
- button.filters = null;
- button.filters = [new BevelFilter(1, 45, 0xdddddd, 0xbbbbbb)];
- }
- private function onButtonMouseDown(e:MouseEvent):void {
- var button:Sprite = e.currentTarget as Sprite;
- button.filters = null;
- button.filters = [new BevelFilter(1, 225, 0xdddddd, 0xbbbbbb)];
- }
- private function updateFill():void {
- graphics.clear();
- graphics.beginFill(0xCCCCCC);
- graphics.drawRect(0, 0, _textField.textWidth + 20, _textField.textHeight + 14);
- graphics.endFill();
- }
- }
About this entry
You’re currently reading “Tweensy - sound,” an entry on jp.ferv.blog
- Published:
- Mon, May 18th, 2009 at 3:31 PM
- Author:
- dsk
- Category:
- Web
- Tags:
- ActionScript 3.0, Tweensy
No comments
Jump to comment form | comments rss | trackback uri