AS3:ReferenceError:错误#1069:

时间:2014-10-27 04:19:55

标签: actionscript-3 flash flash-cc

我试图将声音文件加载到我的Flash项目中。然而,我一直收到这个错误。

的ReferenceError:

Error #1069: Property COMPLETE not found on flash.events.Event and there is no default value. at LoadSND/soundLoaded()[C:\Users\Admin\Desktop\Final Project\LoadSND.as:38]

相关代码:

    package {
    import flash.events.*;
    import flash.media.*;
    import flash.net.URLRequest;


    public class LoadSND {

        //declare variables
        private var sndTrack: Sound;
        private var sndChannel: SoundChannel;
        private var sndVolume: Number;
        private var newTrack: String;
        private var canRepeat: Boolean;

        public function LoadSND(myTrack: String, myRepeat: Boolean = true) {
            // constructor code
            // set a default volume and track 
            sndVolume = 0.5;
            setTrackData(myTrack, myRepeat);
        }


        private function loadSound(): void {
            // first stop all old sounds playing 
            SoundMixer.stopAll();
            // create a new sound for the track and a new sound channel 
            sndTrack = new Sound();
            sndChannel = new SoundChannel();
            // load the required sound
            sndTrack.load(new URLRequest(newTrack));
            // when loaded – play it;
            sndTrack.addEventListener(Event.COMPLETE, soundLoaded);
        }

        private function soundLoaded(Event): void {
            // finished with this listener so remove it 
            sndTrack.removeEventListener(Event.COMPLETE, soundLoaded);
            // call the play sound function 
            playSound();
        }

        private function playSound(): void {
            // assign music to the musicChannel and play it 
            sndChannel = sndTrack.play();
            // setting the volume control property to the sound channel 
            sndChannel.soundTransform = new SoundTransform(sndVolume, 0);
            // but add this one to make repeats 
            sndChannel.addEventListener(Event.SOUND_COMPLETE, playAgain);
        }

        private function playAgain(Event): void {
            // remove this listener and repeat playSound() 
            sndChannel.removeEventListener(Event.SOUND_COMPLETE, playAgain);
            playSound();
        }

        private function setTrackData(myTrack: String, myRepeat: Boolean): void {
            // update the new track information 
            newTrack = myTrack;
            canRepeat = myRepeat;
            // and load it 
            loadSound();

        }

        private function setVolumeLevel(Number): void {

        }

    } //end class

} //end package

通过我的Main.as

加载默认曲目
package {

import flash.display.MovieClip;
import flash.text.TextField;
import flash.display.SimpleButton;
import flash.utils.Dictionary;
import flash.text.TextFormat;
import flash.net.*;
import flash.events.*;
import fl.controls.*;
import flash.media.*;
import fl.events.ComponentEvent;
import fl.managers.StyleManager;
import fl.data.DataProvider;
import fl.data.SimpleCollectionItem;
import fl.managers.StyleManager;
import fl.events.ComponentEvent;
import flash.events.Event;
import flash.net.SharedObject;
import LoadSWF;
import GameButton;
import LoadSND;


public class Main extends MovieClip {
    //Sound Variables
    private var MAX_TRAX: int = 7;
    private var MAX_SFX: int = 9;
    private var sndPath: String;
    private var sndTrack: LoadSND;
    private var isMuted: Boolean;
    private var canRepeat: Boolean;
    private var sndVolume: Number;




    public function Main() {
        // constructor code
        sndPath = "musicSFX/Fury.mp3";
        isMuted = false;
        sndTrack = new LoadSND(sndPath, canRepeat);
    }

感谢任何帮助:)谢谢

1 个答案:

答案 0 :(得分:0)

问题在于soundLoaded函数的定义。你只把类放在那里而不是带有类型声明的参数。如果您通过以下方式调整soundLoaded函数的定义,则应该解决这个问题:

private function soundLoaded(event:Event): void

顺便提一句,问题出现在函数playAgainsetVolumeLevel中。