Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Pascal Discussion :

Lecteur mp3 unité Sound


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Lecteur mp3 unité Sound
    Bonjour !

    Voici un exemple de code utilisant l'unité Sound de Flash-Pascal 0.8 pour lire un fichier mp3.

    J'avais besoin d'un lecteur qui lise toujours le même fichier. Je n'ai pas pris le temps de lui faire des boutons: il se commande avec les touches du clavier.

    Sur mon ordinateur (qui n'est pas très rapide), il faut parfois attendre quelques secondes pour que la musique démarre, mais ça marche.

    Je compte encore travailler dessus. Donc si vous avez des améliorations à me suggérer, elles seront bienvenues.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    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
    program test_mp3;
     
    // Lecture d'un fichier audio au format MP3
     
    uses
      Flash8, Sound;
     
    {$FRAME_WIDTH 360}
    {$FRAME_HEIGHT 240}
    {$BACKGROUND $ffffff}
     
    type
      TEditBox=class(TextField)
        procedure onKeyDown;
      end;
     
    var
      f: TextFormat;
      e: TEditBox;
      t: TextField;
      s: Sound;
     
    procedure TEditBox.onKeyDown;
    begin
      if Key.getAscii=13 then s.Start(0,1) else s.Stop;
    end;
     
    begin
      f:=TextFormat.Create('Tahoma',12);
      f.color:=$111111;
      f.bold:=True;
     
      e:=TEditBox.Create(nil,'input',0,0,0,360,240);
      e.type:='input';
      Key.addListener(e);
     
      t:=TextField.Create(nil,'output',1,0,0,360,240);
      t.text:='J.-S. Bach Cantate Ich habe genug BWV 82'+#13+
      'Dietrich Fischer-Dieskau'+#13+#13+
     
      'Appuyez sur '+"Entrée"+' pour commencer la lecture,'+#13+
      'sur n''importe quelle autre touche pour l''interrompre.';
     
      t.setTextFormat(0,Length(t.text),f);
     
      s:=Sound.Create(_root);
      s.loadSound('abschied.mp3',false);
    end.


    abschied.mp3

  2. #2
    Membre expérimenté
    merci pour cette découverte. ça fait gagner du temps

    D'après ce que j'ai compris, tu peux te simplifier la vie :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
      t:=TextField.Create(nil,'output',1,0,0,360,240);
      t.setNewTextFormat(f);


    au lieu de setTextFormat..

    @+

  3. #3
    Rédacteur/Modérateur

    Citation Envoyé par Archimède Voir le message
    D'après ce que j'ai compris, tu peux te simplifier la vie :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
      t:=TextField.Create(nil,'output',1,0,0,360,240);
      t.setNewTextFormat(f);


    au lieu de setTextFormat..
    Oui, j'ai vu ça aussi mais je n'ai pas encore eu le temps de l'étudier. A suivre !

  4. #4
    Membre expérimenté
    En fait, c'est simple... Si tu veux fixer une police, tu utilises :
    setNewTextFormat avant ton Field.Text. Et si tu veux ajouter une police particulière à un endroit de la chaîne, tu utilises setTextFormat avec son beginindex et endindex...
    A ajouter en dessous de ton Field.Text.

    @+

  5. #5
    Membre expérimenté
    Pour reprendre la police symbole avec la nouvelle version :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    program Textes;
     
    uses
      Flash8;
     
     
     
    var
      Format1: TextFormat; 
      Format2: TextFormat;  
      Field  : TextField; 
     
    begin
     
      Format1 := TextFormat.Create('Arial', 20, $000000);
      Format2 := TextFormat.Create('Symbol',20,$000000);
      Field := TextField.Create(nil, '', 1, 10, 10, 150, 40);
      Field.SetNewTextFormat(Format1);
      Field.Text := 'd=100 mm';
      Field.SetTextFormat(6,7,Format2);  
    end.

  6. #6
    Rédacteur/Modérateur

    C'est simple en effet. Merci pour l'explication et l'exemple.

  7. #7
    Rédacteur/Modérateur

    Voici mon exemple fini. Le point intéressant, outre la lecture d'un fichier mp3, est la mise en forme du texte. Je me suis servi de l'exemple "Textes.pas" ainsi que de l'exemple donné ci-dessus par Archimède.

    abschied.mp3

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    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
    program mp3;
     
    uses
      Flash8, Sound;
     
    {$FRAME_WIDTH 400}
    {$FRAME_HEIGHT 300}
    {$BACKGROUND $000000}
     
    type
      TEditBox=class(TextField)
        procedure onKeyDown;
      end;
     
    var
      f1,f2,f3 : TextFormat;
      box      : TEditBox;
      field    : TextField;
      music    : Sound;
      s1,s2,s3 : String;
     
    procedure TEditBox.onKeyDown;
    begin
      case Key.getAscii of
        080:music.Start(0,1);
        083:music.Stop;
        112:music.Start(0,1);
        115:music.Stop;
      end;
    end;
     
    begin
      f1:=TextFormat.Create('Arial',14);
      f1.color:=$ffffff;
      f1.Bold:=True;
      f2:=TextFormat.Create();
      f2.Italic:=True;
      f3:=TextFormat.Create();
      f3.Align:='center';
     
      box:=TEditBox.Create(nil,'input',0,0,0,0,0);
      box.type:='input';
      Key.addListener(box);
     
      field:=TextField.Create(nil,'output',1,10,10,380,280);
      field.setNewTextFormat(f1);
     
      s1:='IN MEMORIAM'+#13+#13+'Dietrich Fischer-Dieskau'+#13+#13+
          '(1925-2012)'+#13+#13+#13;
      s2:='Mein Gott! wann kommt das sch'+"ö"+'ne: Nun!'+#13+
          'Da ich im Frieden fahren werde'+#13+
          'Und in dem Sande k'+"ü"+'hler Erde'+#13+
          'Und dort bei dir im Scho'+"ß"+'e ruhn.'+#13+
          'Der Abschied ist gemacht:'+#13+
          'Welt, gute Nacht!'+#13+#13+#13;
      s3:='[P] Play abschied.mp3'+#13+'[S] Stop';
     
      field.text := s1 + s2 + s3;
      field.setTextFormat(Length(s1),Length(s1+s2),f2);
      field.setTextFormat(0,Length(s1),f3);
     
      music:=Sound.Create(_root);
      music.loadSound('abschied.mp3',false);
    end.

  8. #8
    Membre expérimenté
    merci pour ce complément...

    @+

###raw>template_hook.ano_emploi###