Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Flash Pascal
Flash Pascal Forum d'entraide sur la création de fichiers Flash en Object Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/07/2012, 22h25   #1
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 023
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 023
Points : 975
Points : 975
Par défaut Le onMouseWheel est inopérant

J'ai essayé de mettre en place un zoom (_xscale et _yscale) avec mouse.onMouseWheel sans résultat. J'ai remarqué que l'événement était placé en commentaire dans l'unité Flash8 donc tes essais ont été sans doute inopérants...

Est ce que l'on peut espérer un onMouseWheel avec FlashPascal et si oui comment... ?

merci
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2012, 06h25   #2
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 393
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 393
Points : 10 728
Points : 10 728
oui, là aussi je dois trouver une syntaxe spécifique...j'hésite à utiliser des Interface...

j'ai pensé à ceci (qui n'est pas supporté actuellement) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
type
  IMouseListener = Interface
    procedure onMouseDown;
    procedure onMouseMove;
    procedure onMouseUp;
    procedure onMouseWheel(delta: Number = 0; scrollTarget: TObject = nil);
  end;
 
  Mouse = external class
    class procedure addListener(listener: IMouseListener);
    class function hide: Number;
    class function removeListener(listener: IMouseListener): Boolean;
    class function show: Number;
  end;
 
type
  MonClip = class(MovieClip, IMouseListener)
    procedure onMouseWheel(delta: Number = 0; scrollTarget: TObject = nil);
  end;
car en fait l'évènement n'existe pas au niveau de Mouse, il faut le déclarer dans un objet qu'on passe en paramètre de Mouse.addListener()

le problème avec le mot clé Interface, c'est q'un objet qui implémente une interface est supposé implémenter toutes ses fonctions...ce qui n'est pas obligatoire dans le cas présent.

En attendant, il est possible de le faire malgré tout, mais le compilateur n'a aucun indice sur la syntaxe de l'événement, il faut donc faire attention à la casse comme avant la nouvelle approche des événements.

voici un exemple avec l'exemple ZoneFlash (je ne reprend que les modifications)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
//...
  TCadre = class(MovieClip)
    constructor Create(Depth: Integer);
    procedure onEnterFrame; override;
    procedure onMouseWheel(delta: Number; scrollTarget: TObject);
  end;
//...
procedure TCadre.onMouseWheel(delta: Number; scrollTarget: TObject);
begin
  _xscale := _xscale - 5 * delta;
  _yscale := _yscale - 5 * delta;
end;
 
begin
 cadre := TCadre.Create(100);
 Mouse.addListener(cadre);
//...
__________________
Developpez.com: Mes articles, forum FlashPascal
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice, FlashPascal
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2012, 10h19   #3
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 023
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 023
Points : 975
Points : 975
Merci, nickel !

voici un exemple opérationnel :

Code :
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
 
 program PEssaizoom;
 
{$FRAME_WIDTH 500}
{$FRAME_HEIGHT 500}
{$BACKGROUND $dcdcdc}
 
uses
  Flash8;
 
type
 
  pixel=class(MovieClip)
   Procedure Rectangle(x1,y1,x2,y2:number);
   procedure onMouseWheel(delta:Number; scrollTarget: TObject);
   constructor create;
  end;
 
 
constructor Pixel.create;
begin
 inherited create(nil,'pixel',0);
 beginFill(clred);
 rectangle(-150,-150,-50,150);
 beginFill(clgreen);
 rectangle(-50,-150,50,150);
 beginFill(clblue);
 rectangle(50,-150,150,150);
 _x:=250;
 _y:=250;
 _xscale:=100;
 _yscale:=100;
 Mouse.addlistener(self);
end;
 
procedure Pixel.onMouseWheel(delta:Number; scrollTarget: TObject);
begin
  _xscale:=_xscale+5*delta;
  _yscale:=_yscale+5*delta;
  If (_xscale<0) and (_yscale<0) then
  begin
   _xscale:=0;
   _yscale:=0;
  end;
end;
 
Procedure Pixel.rectangle(x1,y1,x2,y2:number);
begin
  Moveto(x1,y1);
  LineTo(x2,y1);
  Lineto(x2,y2);
  Lineto(x1,y2);
  Lineto(x1,y1);
end;
 
 
begin
 Pixel.create;
end.
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h47.


 
 
 
 
Partenaires

Hébergement Web