Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-10-2004, 10:52   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
variabelen Sound abspielen mit Function

Tach die Herren,
ich möchte gerne mit einer Function versdiedene Button Sounds abspielen.

Zur Function:
Ich brauche auf der Hauptzeitleiste eine Function die einen Over und Down Sound abspielt wenn ich den Button in einem Movie Clip ansteuere.

Bisher war das recht einfach da ich nur einen Over und Down Sound hatte.
Nun hat aber jeder Button einen anderen Sound und ich finde es höchst uncool das jetzt für jeden Button einzeln zu bauen.

Bisher
IN DER HAUPTZEITLEISTE:

over = new Sound(this);
over.attachSound("over");
playingover = false;
click = new Sound(this);
click.attachSound("down");
playingclick = false;


IM MOVIECLIP AUF DEM BUTTON:

on (rollOver) {
_root.over.start(0, 0);
_root.playingover = true;
}
on (release) {
_root.click.start(0, 0);
_root.playingclick = true;
}


Ich möchte nun 10 verschiedene Buttons mit 10 verschiedenen Sounds belegen die aus der Bibliothek geladen werden. Den dazugehörigen Sound möchte ich aus dem Movieclip übergeben sodaß in ich nur eine Function brauche:

Mein Lösungsansatz (bin kein scripter !!! nur von der Idee)

HAUPTZEITLEISTE:

menusound.function(oversound,downsound)
{
over = new Sound(this);
over.attachSound(oversound)
playingover = false;
click = new Sound(this);
click.attachSound(downsound)
playingclick = false;

AUF DEM BUTTON
??????????????????????


Hat da jemand eine Idee ???
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:13   #2 (permalink)
Nett hier ...
 
Benutzerbild von makese
 
Registriert seit: Nov 2002
Ort: Berlin
Beiträge: 643
...

hai

ich mach det immer mit dem teil
(hab da grad noch drin rumgeschrieben könnte kleien fehler drin sein)

idee ist alle sound an einer stelle abzulegen ... dann kann man durch die functions unten play_sound() stop_sound() die einzelnen ein und ausblenden
PHP-Code:
    
    xxx
=0
    sounds 
= new Array ();
function 
push_sound(link,verkn,vol,pan){
    
    
= new Object ();
    
s.sound_link =link;// name für function 
    
s.sound verkn// name in der verknüpften bibo
    
s.sound_vol vol
    s
.sound_pan =pan
    sounds
.push (s);
    
}
/* 
im folgenden wird ein array erstellt mit allen sounds drin , dies geschieht durch den functionsaufruf
soundlink=der name für die function zb. motorgeraeusch 
sound = verknüpfung mit der bibo
vol
pan
.. die parameter der folgenden functionsaufrufe
*/
push_sound("soundllink1","sound1",100,50)
push_sound("soundllink2","sound2",100,40)
// -... hier einfach noch mehr aufrufen ...push_sound("soundname","soundverknuepgung",vol,pan)
    
// hier wird nun aus den array mit den sound, movieclips mit den siunds drin attache ... können dan alle über  this["mc_"+wen] angesprochen werden
[B]// benötigt wird ein mc in als verlinkung mit namen "musike" [/B]
for (i=0i<=sounds.lengthi++) {
        
lev++;
        
        
this.attachMovie ("musike""mc_"+sounds[i].sound_linklev);
        
this["mc_"+sounds[i].sound_link] = new Sound (this["mc_"+sounds[i].sound_link]);
        
this["mc_"+sounds[i].sound_link].attachSound (sounds[i].sound);
        
this["mc_"+sounds[i].sound_link].setVolume (sounds[i].sound_vol);
        
this["mc_"+sounds[i].sound_link].setPan (sounds[i].sound_pan);
    } 


/// ---------------------------
[B]// functions zum starten stoppen unsw[/B]
sound_on=true
function play_sound (wenloop) {
    
    if (
sound_on == true) {
        
        
this["mc_"+wen].start (0loop);
    } else {
        
            
this["mc_"+wen].start (0loop);
            
    }
}
function 
set_vol (wenvol) {
    
this["mc_"+wen].setVolume (vol);
}
function 
stop_sound (wen) {
    
this["mc_"+wen].stop ();
}
function 
stop_sound_all () {
    for (
i=0i<=this.sounds.lengthi++) {
        
this["mc_"+this.sounds[i].sound_link].stop ();
    }


Geändert von makese (25-10-2004 um 14:06 Uhr)
makese ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:20   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
puhhhhhhhhhhhh ist das nicht ein wenig zu umfangreich ?

Sorry, ich beherrsche die Grundkentnisse und blick hier nicht wirklich durch !
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:27   #4 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
ActionScript:
  1. MovieClip.prototype.playButtonSound = function($s_soundlink:String):Void{
  2.     var snd:Sound = new Sound();
  3.     snd.attachSound($s_soundlink);
  4.     snd.start(0,1);
  5. }
  6.  
  7. //auf dem Button
  8. on(rollOver){
  9.     playButtonSound("over");
  10. }
  11. on(release){
  12.     playButtonSound("click");
  13. }
meintest Du sowas?
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:32   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
Ja ich denke das ist sowas !

Wenn ich das aber einbinde bekomme ich eine Fehlermedlung:

Szene=Szene 1, Ebene=Ebene 9, Bild=1: Zeile 1: {' erwartet
MovieClip.prototype.playButtonSound = function($s_soundlink:String):Void{

Szene=Szene 1, Ebene=Ebene 9, Bild=1: Zeile 5: Unerwartetes Auftreten von '}'
}
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:35   #6 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
also das Codesnippet von oben geht ohne Problem, Du musst aufpassen dass Du nicht die {} löscht oder anderes
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:38   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
Ich habe mal eben ne fla gebaut ! Wo liegt dann der Fehler ?

ich muss mal wieder mehr mit Action Script rumspielen .. dann stelle ich so dumme Fragen nicht mehr ;O)
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 11:46   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
http://www.xdc-cms.com/test/test.zip

Hier die Fla !
PS: Auch seltsam ... der Film hat 500kb und gezipt 480 .. obwohl die Sounds nur 6kb haben ??? na ja egal ..ich hoffe es funktioniert über den Link !
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 12:41   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
So nun habe ich ne einfach Lösung gefunden !

In der Hauptzeitleiste:

mysound = new Sound();
function buttonsounds(soundobject,soundname) {
soundobject.attachSound(soundname);
soundobject.start(0,0);
playing = true;
}


auf dem Button:
on(rollOver){
_root.buttonsounds(mysound, "click");
}
on(release){
_root.buttonsounds(mysound, "down");
}


Vielleicht kann das ja jemand benutzen !
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 12:44   #10 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
ja AS ist wichtig, seeeeeeeeeeeeeeehr wichtig für so ziemlich alles . Bei Sound in SWF musst Du übrigens wissen das Sound vor dem Movie geladen wird, d.h. ein Preloader funktioniert nicht mehr in einem SWF in dem Sound importiert wurde. Seit MX sollte man eh attachSound vergessen und stattdessen Sound.loadSound verwenden!
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 25-10-2004, 13:10   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
okay... ich bin ja lernwillig ;O)
...heißt das, daß ich die Button Sounds extern einladen sollte ???

... um diese zu preloaden ?
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 13:39   #12 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
ja mit mySound.loadSound("deinez.B.mp3", true) kannst du streamen und dann per mySound.position direkt die position in Milisekunden abfragen.. somit kann man nun alles streamen und bestimmte event dann nach milisekunden passieren lassen..

feine sache..
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Alt 25-10-2004, 13:49   #13 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 102
Question

okay ... da kommt als nächstes ;O)))

EIN PROBLEM HABE ICH JEDOCH NOCH

Mein kleines Script funzt nur wenn es auf der Haupzeitleiste liegt !!!

Der Button von dem aus ich die Function in der Hauptzeitleiste steuern will steckt aber in einem untergeordneten Mivieclip
.. und mit

on(rollOver){
_root.buttonsound(mysound, "click");
}

kann ich die Function nicht mehr erreichen !!! Was mache ich da ?????
dacarlo ist offline   Mit Zitat antworten
Alt 25-10-2004, 15:03   #14 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
2 Varianten:
ActionScript:
  1. _global.buttonsound = function(){}; //von überall ansprechbar da _global
  2. MovieClip.prototype.buttonsound = function(){}; //ebenso von überall ansprechbar aber MC prototype
  3.  
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 25-10-2004, 15:28   #15 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
zur erklärung...

_global. xxx macht die funktionsbeschreibung variabel sodass sie von überall her aufrufbar ist...

das selbe gilt für den prototype..

lol² jetzt seh ich erst dass dass lahma es auskommentiert hatte.
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele