Search code examples
actionscript-3flashflash-cc

AS3: ReferenceError: Error #1069:


I'm trying to load a sound file into my Flash project. I keep getting this error however.

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]

The relevant code:

    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

Loading a default track through my 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);
    }

Any help is appreciated :) Thanks


Solution

  • The problem lies in the definition of soundLoaded function. You put just class in there instead of argument with type declaration. It should be solved if you adjust definition of the soundLoaded function in the following way:

    private function soundLoaded(event:Event): void
    

    By the way same problem is in functions playAgain and setVolumeLevel.