Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在flash对象中调用函数仅在内部起作用_Flash_Actionscript 3_Oop - Fatal编程技术网

在flash对象中调用函数仅在内部起作用

在flash对象中调用函数仅在内部起作用,flash,actionscript-3,oop,Flash,Actionscript 3,Oop,我正在使用一个包在Flash中播放.wav文件。我可以使wav的播放,但是,我不能做的是从一个按钮触发他们的播放。我怀疑这是因为我误解了这个关键词。下面是一个例子 您可以看到,当我直接调用playBackTest时,它可以工作;当我从按钮调用这个对象时,它不会 如有任何建议,将不胜感激 package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.U

我正在使用一个包在Flash中播放.wav文件。我可以使wav的播放,但是,我不能做的是从一个按钮触发他们的播放。我怀疑这是因为我误解了这个关键词。下面是一个例子

您可以看到,当我直接调用playBackTest时,它可以工作;当我从按钮调用这个对象时,它不会

如有任何建议,将不胜感激

package  
 {  
    import flash.display.Sprite;  
    import flash.net.URLLoader;  
    import flash.net.URLRequest;  
    import flash.events.Event;  
    import flash.utils.ByteArray;  
    import org.as3wavsound.WavSound;  
    import org.as3wavsound.WavSoundChannel;
    import org.as3wavsound.WavSoundPlayer;
    import flash.display.*; 
    import flash.text.TextField;
    import flash.events.ProgressEvent;

     public final class PlaySound extends MovieClip  
     {  
        var tts:WavSound;
        var soundUrl:String;
        var soundType:String;
        var statusTextField:TextField  = new TextField();
        var WavChannel:WavSoundChannel; 
        var statusMC:MovieClip;
        var totalRemainingLoad:int = 0;

        public function PlaySound(soundUrl:String, repeats:String, volumeLevel:Number, statusMC):void {  

            //set variables of this object when it's initiated 
            this.soundUrl = soundUrl;
            this.statusMC = statusMC;
            loadWav();      
        }

        public function loadWav() { 
            var urlRequest:URLRequest = new URLRequest(soundUrl); 
            var wav:URLLoader = new URLLoader();  
            wav.dataFormat = 'binary';  
            wav.load(urlRequest);
            wav.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            this.statusMC.addChild(statusTextField);            
            wav.addEventListener(Event.COMPLETE, makeWav);  
        }

        private function progressHandler(event:ProgressEvent):void {
            var loadTime:Number = event.bytesLoaded / event.bytesTotal;
            var LoadPercent:uint = Math.round(100 * loadTime);
            statusTextField.text =  LoadPercent + ' % loaded ';
        }       

        public function makeWav(e:Event) {  
            this.tts = new WavSound(e.target.data as ByteArray);
            playBackTest();
        }

        public function playBackTest() {
            trace('This makes audio play'); 
            this.tts.play(); 
        }       

        public function playBack() {
            trace('This does not if called from outside with a button press'); 
            this.tts.play(); 
        }   


    }  
}  
您的类是继承MovieClip,因此PlaySoundClass应该是一个添加的阶段。 如果您的类没有完全添加statage。课堂上没有

您的内部var更改为公共var或getter/setter方法。因为必须从外部访问到内部

并按照以下代码访问您的类

var mySound:PlaySound = new PlaySound(); 
mySound.soundUrl = "your URL"; 
mySound.repeats = "your Repeats"; 
mySound.volumeLevel = volumeLevel; 
mySound.statusMc= your MovieClip;

按钮剪辑或电影剪辑在哪里?你要添加鼠标事件吗?btn.addEventListenerMouseeEvent.CLICK,onClick;或btn.addEventListenerMouseeEvent.MOUSE_DOWN,onDown;FML,因此,如果按钮是在有问题的软件包内制作的,那么它的工作原理与您预期的一样。然而,目前的工作方式是,它多次动态实例化上述类var MySound:PlaySound=newplaysoundsound\u file\u location,loop,volumeLevel,statusMC;声音[bank_index][bank_option_index]=MySound;然后,制作这些对象的软件包就不能调用回放功能——并让它播放。虽然它确实跟踪该函数中的文本。有什么想法吗?FML,所以如果按钮是在有问题的软件包内制作的,那么它的工作原理与您预期的一样。然而,目前的工作方式是,它多次动态实例化上述类,如var MySound:PlaySound=newplaysoundsound\u file\u location,loop,volumeLevel,statusMC;声音[bank_index][bank_option_index]=MySound;然后,制作这些对象的软件包就不能调用回放功能——并让它播放。虽然它确实跟踪该函数中的文本。有什么想法吗?-Jim 13分钟前如果它跟踪文本但不播放声音,我的第一个猜测是声音没有完全加载或没有准备好播放。如果你在创建这些文件和调用回放时发布一些代码,这可能会有所帮助。我讨厌Flash。我爱你。我现在就去试试。好吧,好像不行。老实说,我不知道这个解释是什么意思,但现在当我创建一个新的PlaySound对象时,它甚至都不调用PlaySound方法。也许我应该说我有很多声音对象,我正在将它们加载到一个数组中。
var mySound:PlaySound = new PlaySound(); 
mySound.soundUrl = "your URL"; 
mySound.repeats = "your Repeats"; 
mySound.volumeLevel = volumeLevel; 
mySound.statusMc= your MovieClip;