0

我正在尝试将声音文件加载到我的 Flash 项目中。但是,我不断收到此错误。

参考错误:

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);
    }

任何帮助表示赞赏:) 谢谢

4

1 回答 1

0

问题在于soundLoaded函数的定义。您只在其中放置类而不是带有类型声明的参数。如果通过soundLoaded以下方式调整函数的定义应该可以解决:

private function soundLoaded(event:Event): void

顺便说一句,函数playAgainsetVolumeLevel.

于 2014-10-27T07:26:21.377 回答