# Newboe Need Help: Create a class with event listener

**URL:** <https://forum.kirupa.com/t/newboe-need-help-create-a-class-with-event-listener/326419>\
**Category:** flash\
**Created:** [December 13, 2011, 5:43am UTC](https://forum.kirupa.com/t/newboe-need-help-create-a-class-with-event-listener/326419 "2011-12-13T05:43:53Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![digitalcrawler](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@digitalcrawler](https://forum.kirupa.com/u/digitalcrawler)\
**Post date:** [December 13, 2011, 5:43am UTC](https://forum.kirupa.com/t/newboe-need-help-create-a-class-with-event-listener/326419/1 "2011-12-13T05:43:53Z")

</div>

Hello,  
I’ve been trying to search about my problem but can’t found the answer.

My problem is: I’m trying to create an external class which function is load an external sound file and play or stop depends on stage.activate and stage.deactivate events.

The actionscript 3 in the timeline is functioning properly, but when I try to create as external class, it has so many errors.  
So many that I can’t troubleshoot them. Btw, it’s my first class creation.

Is there anybody who kindly enough to give me some guidance to create a proper class with stage event listener?

here’s my as3:

```auto

import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
import flash.filesystem.File;

stage.addEventListener(Event.ACTIVATE, flashActive);
stage.addEventListener(Event.DEACTIVATE, flashDeactive);

var sound:Sound = new Sound();
var soundChannel:SoundChannel;
var bgSoundTransform = new SoundTransform();
var lastPosition:Number = 0;
var soundIsPlay:Boolean = false;

var soundLocation:File = File.applicationDirectory; 
soundLocation = soundLocation.resolvePath("media"+File.separator+"backsound_loop.mp3");

sound.load(new URLRequest(soundLocation.url));

soundChannel = sound.play();
soundIsPlay = true;

sound.addEventListener(Event.COMPLETE, onSoundLoadComplete);

function soundPlayer():void
{
	if (! soundIsPlay)
	{
		soundChannel = sound.play(lastPosition);
		soundIsPlay = true;
	}
	else
	{
		trace("Sound Already Played");
	}
}

function soundStopper():void
{
	if (soundIsPlay)
	{
		lastPosition = soundChannel.position;
		soundChannel.stop();
		soundIsPlay = false;
	}
	else
	{
		trace("Sound Already Stopped");
	}
}

function onSoundLoadComplete(e:Event):void
{
	sound.removeEventListener(Event.COMPLETE, onSoundLoadComplete);
	soundChannel = sound.play();
	soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
}

function onSoundChannelSoundComplete(e:Event):void
{
	e.currentTarget.removeEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
	soundChannel = sound.play();
}

function flashActive(event:Event):void
{
	stage.frameRate = 24;
	soundPlayer();
	trace("flash gained focus, now frame rate is "+ stage.frameRate);

}

function flashDeactive(event:Event):void
{
	stage.frameRate = 0;
	soundStopper();
	trace("flash lost focus, now frame rate is "+ stage.frameRate);

}

```

The above timeline script is loading file backsound\_loop.mp3 from media folder in application directory.

I’m trying to create a class, so I can call for example: createBackSoundLoop(sound\_file)

yes, i get the above code from various sources and it works from timeline.

any guidances?

thanks
