PDA

Volledige versie bekijken : Sound object


Ruby
%Europe/Berlin %864 %2005, 21:45
Hoi,

Ik heb een scriptje geschreven waar afhankelijk van de muis positie het geluid harder/zachter wordt.


stop();

var sound0,sound1:Sound;
var xStep,yStep,xHard,yHard,oDistance:Number;

_root.onLoad = function()
{
sound0 = new Sound();
sound0.attachSound("hardbase");
sound0.setVolume(0);
sound0.start();

hardbase.sound = sound0;

sound1 = new Sound();
sound1.attachSound("2step");
sound1.setVolume(0);
sound1.start();

step.sound = sound1;

xHard = hardbase._x + hardbase._width/2;
yHard = hardbase._y + hardbase._height/2;

xStep = step._x + step._width/2;
yStep = step._y + step._height/2;

oDistance = xStep - xHard;
}

_root.onEnterFrame = function()
{
var xm:Number = _root._xmouse;
var ym:Number = _root._ymouse;

preformTransform(xHard,yHard,xm,ym,hardbase,sound0 );
preformTransform(xStep,yStep,xm,ym,step,sound1);
}

function preformTransform(xo:Number,yo:Number,xm:Number,ym: Number,mc:MovieClip,sound:Sound):Void
{
var distance:Number = calcDistance(xo,yo,xm,ym,mc);

if(distance < 40)
{
sound1.setVolume(20);
}
else
{
sound1.setVolume(0);
}
}


function calcDistance(xo:Number,yo:Number,xm:Number,ym:Numb er,mc:MovieClip):Number {
return Math.round(Math.sqrt(Math.pow(xm-xo,2)+Math.pow(ym-yo,2)));
}


Wat ik niet begrijp is dat als ik het volume van sound1 omhoog draai ook sound0 op hetzelfde volume komt te staan. Weet iemand waardoor dat komt?

Thnx

mateo)
%Europe/Berlin %877 %2005, 22:03
ja dat is een beetje verwarrend, maar als je een Sound object aanmaakt zonder een target mc te specificeren dan werken alle methods die je op dat Sound object loslaat op ALLE geluiden in de hele movie.

uit de flash help:

If you do not specify a target when you create a new Sound object, you can use the methods to control sound for the whole movie.

The following example creates a new Sound object, passes it the target movie clip my_mc, and calls the start method, which starts any sound in my_mc.

var movie_sound: Sound = new Sound(my_mc);
movie_sound.start();

TheDutch
%Europe/Berlin %468 %2005, 12:14
Wat je dus het beste kunt doen is dynamisch een MovieClip aanmaken voor elke sound object. Deze gebruik je dan als target :).

this.createEmptyMovieClip("soundLine0_mc",this.gestNextHighestDepth());
sound0 = new Sound(soundLine0_mc);
sound0.attachSound("hardbase");
sound0.setVolume(0);
sound0.start();

hardbase.sound = sound0;

this.createEmptyMovieClip("soundLine1_mc",this.gestNextHighestDepth());
sound1 = new Sound(soundLine1_mc);
sound1.attachSound("2step");
sound1.setVolume(0);
sound1.start();