Réaliser un projet de crowdsourcing sur Canvas - page 7

 
o_O:

Malheureusement, le code n'est pas complet. Actuellement, les événements graphiques ne font pas la distinction entre A et a.

J'ai déjà écrit à ce sujet dans SD.

bonnes nouvelles du sd sur cette question

la prochaine version ajoutera les constantesTerminalInfoInteger pour le statut de CapsLock et Shift.

maintenant ils sont sans-papiers.

1020 - CapsLock
1016 - Shift
1255 - code de la langue d'entrée actuelle

c'est-à-dire que le montage est déjà à moitié terminé. ))

La deuxième tâche est d'apprendre à la carte à capturer l'espace et à entrer.

 
Vasiliy Sokolov:
S'il y a un décalage, il est invisible à l'œil nu. Dans mon panneau, à un moment donné, MouseMove envoyait des milliers d'éléments, y compris invisibles, puis j'ai fait un envoi plus intelligent, mais visuellement cela n'a pas ajouté à la vitesse.
Il y a certainement des décalages. Cela dépend du nombre d'articles. Je l'ai vérifié. Lorsque le nombre d'objets commence à dépasser 400 -500 drag and drop, mes fenêtres commencent à ralentir... Je m'efforce d'améliorer l'efficacité du code depuis des mois, mais je n'ai pas réussi à surmonter cet effet. Je pense que plus l'ordinateur est puissant, plus il traîne d'objets, la lenteur sera imperceptible.
 
Реter Konow:
Il y a certainement des freins. Cela dépend du nombre d'objets. J'ai vérifié. Lorsque le nombre d'objets commence à dépasser 400-500, le glisser-déposer de mes fenêtres commence à ralentir... Je m'efforce d'améliorer l'efficacité du code depuis des mois, mais je n'ai pas réussi à surmonter cet effet. Je pense que plus l'ordinateur est puissant, plus le décalage sera imperceptible pour les objets.
Les performances sont affectées par l'algorithme de livraison des événements + la réponse minimale de l'élément à l'événement transmis. Il semble que dans votre cas, le ralentissement ne soit pas dû à l'événement lui-même, mais aux algorithmes qui traitent ces événements.
 
o_O:

Est-ce que les instances multiples d'un indikateur sortent sur une seule toile ? Je ne sais pas. C'est un peu effrayant.

Nah. Tout ce dont j'ai besoin, c'est d'un événement MouseDown, et je serai heureux.
 
Комбинатор:
Nah. De toute façon, tout ce dont j'ai besoin est l'événement MouseDown, je vais
Surveillez l'événement CHARTEVENT_MOUSE_MOVE, il transmet l'état de la souris, des touches Crtl et Shift.
 
Vasiliy Sokolov:

Il me semble qu'après les articles d'Anatoly, c'est au moins un étrange passe-temps que de créer à nouveau les mêmes œufs de profil. Le graphisme n'est pas du tout un sujet d'actualité pour MT.

  • Les utilisateurs n'ont pas besoin d'interfaces graphiques. Par conséquent, il est impossible de contrôler l'interface graphique et son développement ne sera jamais rentable.
  • Si vous voulez améliorer vos compétences, il est préférable de trouver immédiatement un emploi en tant que junior. Ainsi, vous pourrez au moins commencer à gagner de l'argent tout de suite et améliorer lentement vos compétences.
  • Un public cible trop étroit. Qui a besoin de bibliothèques ? - Absolument personne, à l'exception d'une poignée de programmeurs, et ils ont depuis longtemps écrit toutes les bibliothèques dont ils ont besoin. Par exemple, j'ai deux bibliothèques graphiques qui me sont propres.

Je ne veux donner de leçon à personne ici, mais un conseil : les gars, sentez la poudre. Apprenez à travailler avec les utilisateurs. Apprenez leur psychologie. Apprenez à contrôler leurs idées. Puis, revenez rapidement sur terre et vous raisonnerez d'une manière complètement différente. Moi aussi, j'ai cru autrefois à des idées spéciales et belles, mais toutes ces bêtises, ça ne marche pas. Ce dont vous discutez ici n'est utile à personne d'autre qu'à vous.

+ c'est vrai

La seule fois où j'ai dit à un utilisateur - faisons une interface vraiment cool et belle !

Ce dont ils ont réellement besoin, c'est d'un conseiller expert sans fioritures ni fonctionnalités supplémentaires, c'est-à-dire sans interface conviviale !

La chose la plus importante que les utilisateurs veulent est le fonctionnement du produit selon les RPT.

Nous savons tous que le développement de l'interface + la conception - prend une quantité décente de temps pourtant pour le débogage est dépensé une ressource très coûteuse de TEMPS !

 
Ilyas:
Surveillez l'événement CHARTEVENT_MOUSE_MOVE, il envoie l'état de la souris, des touches Crtl et Shift.
Comme je l'ai expliqué plus haut, cet événement n'est pas lié à l'objet et est envoyé trop souvent. Ne pas être lié à un objet est plus important.
 
Ilyas:
Surveillez l'événement CHARTEVENT_MOUSE_MOVE, il transmet l'état de la souris, des touches Crtl et Shift.

n'est pas exactement ce que l'on attend.

L'événement OBJECT_CLICK est généré après le soulèvement de la souris et ne peut pas être suivi lorsque la souris est pressée sur un objet.

Je veux un événement de démarrage. lorsque la souris est pressée sur l'objet.

Combinateur:
Comme je l'ai expliqué plus haut, cet événement n'est pas lié à l'objet et est envoyé trop souvent. Ne pas être lié à l'objet est plus important.
CHARTEVENT_OBJECT_DRAG - si je me souviens bien, il n'est pas généré au début du mouvement mais après le relâchement de la souris ?
 
o_O:
CHARTEVENT_OBJECT_DRAG est un événement presque inutile. Parce qu'il signale la fin du déplacement d'un objet graphique de manière standard (c'est-à-dire qu'il doit être sélectionné, et les objets sélectionnés sont parfaitement supprimés en appuyant sur del).
 
Vasiliy Sokolov:
La performance est affectée par l'algorithme de livraison de l'événement + réponse minimale de l'élément à l'événement passé. Il semble que dans votre cas, la lenteur ne soit pas due à l'événement lui-même mais aux algorithmes qui gèrent ces événements.

L'acheminement de l'événement et l'algorithme sont les plus simples possibles : dans OnChartEvent() sur l'événement MouseMove, dans lequel l'état du bouton gauche de la souris enfoncé est également fixé, nous attrapons l'événement d'enfoncement de la poignée de déplacement de la fenêtre. Ensuite, appelez la fonction de déplacement de la fenêtre dans laquelle un décalage X et Y (à l'aide de ObjectSetInteger()) égal au déplacement actuel du curseur est appliqué à tous les objets de la fenêtre à l'intérieur de la boucle. C'est tout.

En même temps, il est clair que plus il y a d'objets dans la fenêtre, plus il faut en déplacer. Apparemment, un grand nombre d'objets à déplacer est à l'origine du ralentissement...

Raison: