AS3 SoundChannel音频功能的位置

时间:2013-02-13 11:14:34

标签: actionscript-3 audio air scope soundchannel

我遇到了变量范围问题。我知道这必须是一个简单的解决办法,但我找不到它。

我需要通过功能中的声道播放声音。然后我需要另一个功能来读取声道位置。但它没有看到它,因为播放它的函数中的新变量。如果我在函数外面播放它,我可以从另一个函数获取位置,但如果我在函数中发出声音,则另一个函数无法读取通道位置。我该如何解决这个问题。

守则

import flash.filesystem.File; 
import flash.filesystem.FileMode; 
import flash.filesystem.FileStream;

var lastPosition:Number = 0; var CrossAudio = new Sound();
CrossAudio.load(new URLRequest("Cross.mp3"));

function playCross() {

    PapaAudioChannel = CrossAudio.play();


}
bt_play.addEventListener(MouseEvent.CLICK, playA);

function playA(event:MouseEvent):void    {   
trace(PapaAudioChannel.position);  // Does not work
/// It can't doesn't recognize the PapaAudioChannel because 
 /// it began playing in another function. 

}

如何获取第二个功能以查看音频的位置。我需要通过播放和暂停按钮启动音频,以便播放必须从函数开始。

由于

1 个答案:

答案 0 :(得分:0)

AFAIK声音可以稍微延迟开始,因此在播放()声明后跟踪声音位置不是一个好主意。

修改

顺便说一句,PapaAudioChannel定义在哪里,如果是的话? (因为这是AS3)

如果你在一个函数中定义了一个var,那么它会在函数的末尾与该函数一起消失!

因此,您可能希望在全局范围内定义PapaAudioChannel

import flash.filesystem.File; 
import flash.filesystem.FileMode; 
import flash.filesystem.FileStream;

var PapaAudioChannel:SoundChannel; // defines variable

var lastPosition:Number = 0; var CrossAudio = new Sound();
CrossAudio.load(new URLRequest("Cross.mp3"));

function playCross() {

    PapaAudioChannel = CrossAudio.play();

}

bt_play.addEventListener(MouseEvent.CLICK, playA);

function playA(event:MouseEvent):void {   

    trace(PapaAudioChannel.position);

}