Flashhilfe.de - Flash Community

Framework Mate - Audioplayer [Flash 10]

 


AntwortenRegistrieren Seite1 2  

longCrew#1
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

02.11.2009, 11:28

hi leute,

ich möchte mit dem Framework Mate einen Audioplayer in flex erstellen.

ich hätt ne kl frage wie man in Mate verfährt wenn man Sounds lädt und diese per Play, stop usw komponenten zu steuern.

Mein Vorgehen:
Ich habe eine PlayListManager wo meine Songs gespeichert sind.

Vorgang Play:
Ich würde über die PlayerKomponenten.mxml wird die EventMap aufgerufen weil der  PlayButton gedrückt wurde. Die EventMap ruft jetzt dei PlayListManger  auf um den aktuellen Song zu erhalten und leitetet diesen dann an den PlayEvent-Klasse weiter.
dieser spielt den song jetzt ab.

Vorgang Stop:
Wird die Stop taste gedrückt müsste jetzt wieder der currentSong aus der PlayListManger aufgerufen werden und an StopKlasse geleitet werden datmit der Song stoppt.

Ich bin mir ziemlich unsicher.

Kann mir evtl jemand tipps zu den aufbau geben???

danke schon mla im voraus

mfg
sebi
Die Lösung ist: das Suchen.
LongCrew = 2 people
Werbung
Beiträge: 0
Registriert: Feb 2016


badskill#2
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

02.11.2009, 14:00

Hi,
mir ist der Sinn von der PlayEvent/Stop-Klasse nicht ganz klar. Welche Aufgaben übernehmen diese?
longCrew#3
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

02.11.2009, 14:36

Hi badskill,

hab noch ein paar verständnisprob mit mate;)

also ich bin mir nicht ganz klar darüber wie ich meinen Song den ich aus der Playlist habe steueren kann(play-> lied wird abgespielt, stop-> lied stopt, pause-> pause im lied usw..)

ich drücke den button play -> muss ich dann auch die EventMap aufrufen welche sich dann über z.B das PlaylistModel den aktuell ausgewählten Song sucht und diesen dann abspielt???
wie würde ich dann vorgehen wenn ich Pause drücke wo speichere ich die akt Zeit wo mein Lied angehalten wurde um wenn wieder play gedrückt genau dort weitergespielt wird??

oder sage ich einfach wenn ich ne PlayerKomponentenView (wo pause play und stopButtons drin sind) habe, sind direkt in der View die Buttons mit ihrer Funtkionalität (also play sipiele den song) definiert ohne über die EventMap zu gehen???

wie gesagt ein paar kl verständnisprobs;)

leider finde ich echt fast keine bsp für die struktur bei video/audioplayer mit mate:( weisst du evtl eins?

mfg sebi
Die Lösung ist: das Suchen.
LongCrew = 2 people
badskill#4
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

02.11.2009, 15:09

Die Eventmap rufst du nicht auf, sondern diese verarbeitet Eventtypen, die in dieser Map registriert worden sind.
Beim Klick auf einen Button erzeugst du ein Event, welches in der Map verarbeitet wird.

Den Zustand des Players wird in der Manager/Model-Klasse manipuliert/gespeichert.

Ein Beipiel für einen Audioplayer mit Mate kenne ich nicht, wenn man sich aber die Beispiele ansieht, bekommt man schnell ein Gefühl dafür, wie man mit Mate umgeht. Von daher braucht man das auch nicht unbedingt.
Werbung
Beiträge: 0
Registriert: Feb 2016


longCrew#5
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

04.11.2009, 20:42

hi

hät nochmal ne frage.

wie stelle ich da mit dem lagen des sounds an??

bisheriger Weg(welcher aber nicht funkt):
- View erstellt wo Play, Pause; stop usw Componenten enthalten sind.
- Play-Button wird gedrückt -> EventMap empfängt Ereignis und leitet es an PlayerComponentManager weiter
- im PlayerComponentMangaer File ist die ganze Logik für die Play, Stop, Pause usw Button enthalten

soweit so gut jedoch kommen nun folgende Prob:
- ich möchte nun eine MP3 laden (ich nehme am anfang einfach an das dieses File per URLRequest loud in einen Sound-Obj. gespeichert wird)
diese Datei befindet sich im SampleSongManager. Wie kann ich eine instanz von meiner MP3 in meinen PlayerComponentMangeer erstellen?

- muss ich wenn meine MP3 in meinen PlayerComponentManager geladen ist diese wieder an die View senden, oder???
- oder kann ich einfach sagen ich erstelle im PlayerComponentManager eine Instanz von der MP3 und diese sollte einfach durch die playIt()-Funktion abgespielt werden und muss nicht zurück an die View gesendet werden???

das letztere würde mir sinnvoller erschienen denn ich müsste wenn ich das MP3 File an die View übergebe jedes Mal wenn ein Button gedrück wird neu übergeben und das würde heissen das ich jedes mal die file lade dann playit() aufrufe dann an die View übergebe.
wenn ich jetz pause drücke würde ich wieder im PlayerComponentManager das File laden und dann pausen dass würde ja dann wahrnschinlich net gehen weil es gar nicht abgespielt wird da es neu geladen wurde...

wie man sieht ich bin reichlich verwirrt;)

wie stelle ich das an???

ich hoffe du kannst mir helfen
mfg
sebi
Die Lösung ist: das Suchen.
LongCrew = 2 people
badskill#6
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

04.11.2009, 21:42

Hi,
du musst das Soundobjekt in der Regel nicht an das View übergeben. Die Steuerung der MP3 übernimmt dein Manager.

P.S.
Ich würde ihn allerdings eher PlaybackManager oder so nennen. PlayerComponentManager hört sich so an, als ob damit irgendwas mit der UI geschieht.
longCrew#7
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

05.11.2009, 09:25

hi badskill

danke;)

hab noch ein kl problemchen.
drücke ich meinen play-button wird der Event.type abgefangen und in der EventMap der entsprechende Type aufgerufen.
das funkt super;)

ActionScript:
1
2
3
4
5
6
<!-- EmployeeEvent.PLAY ______________________________________________________________ -->
   
    <EventHandlers type="{PlayerComponentEvent.PLAY}" debug="true">
       <MethodInvoker generator="{PlayerComponentManager}"
          method="startPlay"/>
    </EventHandlers>


Jedoch geht ruft er mir meinen MethodInvoker NIE auf und geht in die method=startPlay
was mache ich falsch??

Mit dem Injector muss ich es ja nicht verbinden. Warum geht mir mein gefeuerter Event nicht in die startPlay???
was fehlt in meiner EventMap?

danke nochmal für deine Hilfe

mfg
sebi
Die Lösung ist: das Suchen.
LongCrew = 2 people
badskill#8
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

05.11.2009, 10:17

Moin,
sollte so funktionieren. Die Klassen werden in der Eventmap importiert? Erstellst du den PlayerComponentManager vorher irgendwo?
longCrew#9
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

05.11.2009, 10:28

hi
ja werden sie und ne serstell ihn vorher nirgends.
das prob ist dass die EventMap nicht meine playIt Methode aufruft.... :(
Die Lösung ist: das Suchen.
LongCrew = 2 people
badskill#10
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

05.11.2009, 10:34

Erstelle den Manager vorher mal über den ObjectBuilder. Brauch man eigentlich nicht, da MethodInvoker sich von ObjectBuilder ableitet.
ActionScript:
1
2
3
<EventHandlers type="{FlexEvent.PREINITIALIZE}">
   <ObjectBuilder generator="{PlayerComponentManager}" cache="global" />
</EventHandlers>

Wie sehen deine Imports aus?
longCrew#11
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

05.11.2009, 10:41

funkt leider auch nicht

imports im MainEventMap

ActionScript:
1
2
3
4
5
              import mx.events.*;
         import com.asfusion.APlayer.mate.events.*;
         import com.asfusion.APlayer.mate.ui.views.*;
         
         import com.asfusion.APlayer.mate.managers.*;
Die Lösung ist: das Suchen.
LongCrew = 2 people
Geändert von longCrew am 05.11.09 um 10:42 Uhr
longCrew#12
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

05.11.2009, 10:45

weisst du wie ich den die PlayerComponentManager(wird später umbenannt wenns hoffentlich funkt;) debuggen kann, da es ja ne AS Class ist kann ich nicht einfach debug="true" machen wie in da EventMap... ??

so sieht übrings die fkt startPlay aus die im PlayerComponentManager die nicht aufgefurfen wird

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
   
              private var currentSong:Sound;

  public function startPlay():void
      {
         //beginn to play
         trace("..........BLA..........");
         currentSong = new Sound(new URLRequest("assets/tiesto.mp3"));
         currentSong.play(0,1);
         
         
      }


evtl liegt ja hier der fehler...
Die Lösung ist: das Suchen.
LongCrew = 2 people
Geändert von longCrew am 05.11.09 um 10:46 Uhr
badskill#13
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

05.11.2009, 10:50

An der Methode startPlay wird es wahrscheinlich nicht liegen.
Irgendwo in deiner Struktur scheint ein Fehler zu sein. Ich kann den von hier aus aber nicht erkennen.

Und wieso ist deine package-Struktur von Mate übernommen und keine eigene erstellt worden?
com.asfusion wird wohl nicht wirklich deine Domain sein.
longCrew#14
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

05.11.2009, 10:53

naja evtl doch:)

ne hab mich an a beispiel gehalten und deswg die package-struktur übernommen;)

ich werde jetzt einfach nochmal die ganze struc überprüfen u hoff ich find den fehler..

ich meld mich wenns neues gibt

mfg
seb
Die Lösung ist: das Suchen.
LongCrew = 2 people
longCrew#15
Benutzerbild von longCrew
Beiträge: 380
Wohnort: München, Berlin
Registriert: Apr 2009

Themenautor/in

05.11.2009, 12:28

hi

ich kann den keinen fehler finden
hier mal ein code ausschnitt:

PlayerComponentView.mxml

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
   width="500" height="100"
   xmlns:Com="mx.core.IUIComponent">
   
   <mx:Script>
      <![CDATA[
         import mx.controls.Image;
      
      /*    import com.asfusion.APlayer.mate.ui.presenters.PlayerComponentPresentationModel;
      
         [Bindable]
         public var model:PlayerComponentPresentationModel; */

         
         import com.asfusion.APlayer.mate.events.PlayerComponentEvent;
         import mx.core.IUIComponent;
         
         [Bindable]
         public var _text:String = "hi";
         
         [Bindable]
         public var image:Image;
         
   
         
         public function playSong():void
         {
            
            trace("play it");
            var event:PlayerComponentEvent = new PlayerComponentEvent (PlayerComponentEvent.PLAY);
            event.value = _text;
            dispatchEvent(event);
            
         }   
         
         public function stopSong():void
         {
            trace("play it");
            var event:PlayerComponentEvent = new PlayerComponentEvent (PlayerComponentEvent.STOP);
            dispatchEvent(event);
         }   
         
      ]]>
   </mx:Script>
   
   
   <!-- GUI ______________________________________________________________________ -->
   
   <mx:HBox>
      <mx:Button id="play"
         label="Play"
         click="playSong()"/>
      
      <mx:Button id="stop"
         label="Stop"
         click="stopSong()"/>
      
      <mx:Button id="puase"
         label="Pause"/>
         
      <mx:Button id="next"
         label="Next"/>
         
      <mx:Button id="back"
         label="Back"/>
         
      
      </mx:HBox>   
      
      
</mx:Panel>



PlayerComponentEvent.as

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.asfusion.APlayer.mate.events
{
   import flash.events.Event;

   public class PlayerComponentEvent extends Event
   {
      //.........................................Constants....................................
      
      public static const PLAY:String = "playSong";
      public static const STOP:String = "stopSong";
      
      
      public var value:String;
      
      //.........................................Constructor..................................
      
      public function PlayerComponentEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
      {
         trace("PlayerCompoentenEvent...");
         super(type, bubbles, cancelable);
      }
      
   }
}


MainEventMap.mxml

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="utf-8"?>
<EventMap xmlns:mx="http://www.adobe.com/2006/mxml"
   xmlns="http://mate.asfusion.com/">
   
   <mx:Script>
      <![CDATA[
         import mx.events.*;
         import com.asfusion.APlayer.mate.events.*;
         import com.asfusion.APlayer.mate.ui.views.*;
         //import com.asfusion.APlayer.mate.ui.presenters.*;
         import com.asfusion.APlayer.mate.managers.*;
      ]]>
   </mx:Script>
   
   
   
   <!-- Debugger __________________________________________________________________ -->
    <!-- remove during production. This tag can be placed here or in your main application -->
   
    <Debugger level="{Debugger.ALL}" />
   

   
   <!-- EmployeeEvent.PLAY ______________________________________________________________ -->
   
    <EventHandlers type="{FlexEvent.PREINITIALIZE}">
        <ObjectBuilder generator="{PlayerComponentManager}" cache="global" />
   </EventHandlers>
   
    <EventHandlers type="{PlayerComponentEvent.PLAY}" debug="true">
       <MethodInvoker generator="{PlayerComponentManager}"
          method="startPlay" cache="global"/>
    </EventHandlers>
   
    <EventHandlers type="{PlayerComponentEvent.STOP}" debug="true">
       <MethodInvoker generator="{ PlayerComponentManager }"
          method="startPlay" />
       
    </EventHandlers>

   <!-- Injectors __________________________________________________________________ -->
   
   
</EventMap>


PlayerComponentManager.as

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.asfusion.APlayer.mate.managers
{
   //Ref auf current gespielten Song
   //ganze Play stop Pause usw. Funktionalität enthalten
   
   import com.asfusion.APlayer.mate.events.*;
   
   import flash.events.EventDispatcher;
   import flash.media.Sound;
   import flash.net.*;
   
   import mx.controls.Image;

   public class PlayerComponentManager extends EventDispatcher
   {
      //.........................................Properties..........................................
   
      private var currentSong:Sound;

      
      
      //.........................................Setters and Getters..........................................
        //ref to current selected song, get Sound
      
   
         
      //.........................................Methods..........................................


      
      public function startPlay():void
      {
         //beginn to play
         trace("..........BLA..........");
         currentSong = new Sound(new URLRequest("assets/tiesto.mp3"));
         currentSong.play(0,1);
         
         
      }
      
      public function startStop():void
      {
         //stop currentSong
      }
       
   
      
      
   }
}


fällt dir etwas auf?

mfg
der weitersuchende sebi;)
Die Lösung ist: das Suchen.
LongCrew = 2 people
badskill#16
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

05.11.2009, 13:00

Dein Event bubbelt nicht. Das Event kommt auch wirklich in der Eventmap an? Ich würde jetzt einfach mal behaupten nein.

AntwortenRegistrieren Seite1 2  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de