Drag and drop: glisser Restriced zone

  • Shadowsong
  • Born
  • Born
  • No Avatar
  • Inscription: Aoû 25, 2004
  • Messages: 4
  • Loc: jamaica
  • Status: Offline

Message Août 25th, 2004, 3:55 pm

Chers AnyoneWhosWillingToHelpOrCan,

Jai créé un bouton ou un clip vidéo [dans ce cas, il ne paraît pas à la question] et je veux être en mesure de le faire glisser à partir de son emplacement initial [par exemple, 0,0] à n'importe quel point dans une zone désignée.

Maintenant, voici pourquoi il en est différent, ce...zone désignée, n'est pas d'ouverture moyenne quadrilatère irrégulier de sa forme - comme un trapèze avec son inclinaison latérale; une ligne courbe non linéaire.

Mon problème est que dans le pas en mesure de limiter la faisant glisser le bouton / clip vidéo avec startDrag (target, true) ou avec startDrag (true, gauche, haut, droite, bas)

Je voudrais vraiment apprécier toute sorte de limiter l'aide là où une zone de glisser des objets, est en cause. [en particulier si cette zone de la traînée est une forme irrégulière] :-(
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Août 25th, 2004, 3:55 pm

  • digitalMedia
  • a.k.a. dM
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Déc 29, 2003
  • Messages: 5169
  • Loc: SC-USA
  • Status: Offline

Message Août 25th, 2004, 9:00 pm

Im penser quelque chose comme:
Code: [ Select ]
button.onPress = function() {
  startDrag(this);
  if(this.hitTest(polygon)===false){
   stopDrag;
  }
}
button.onRelease = function() {
  stopDrag;
}
  1. button.onPress = function() {
  2.   startDrag(this);
  3.   if(this.hitTest(polygon)===false){
  4.    stopDrag;
  5.   }
  6. }
  7. button.onRelease = function() {
  8.   stopDrag;
  9. }
- dM
  • Shadowsong
  • Born
  • Born
  • No Avatar
  • Inscription: Aoû 25, 2004
  • Messages: 4
  • Loc: jamaica
  • Status: Offline

Message Août 26th, 2004, 11:25 am

Hey merci! J'apprécie vraiment DigitalMedia entrée ur. Toutefois, cet effet n'est pas...tout à fait ce que j'avais à l'esprit. Utilisation
Code: [ Select ]
if(this.hitTest(polygon) === false)
  stopDrag;
  1. if(this.hitTest(polygon) === false)
  2.   stopDrag;
seulement garantit que, si je lâche le bouton quelque part en dehors de la zone de la traînée [ie le polygone] l'objet va y rester. Ce que je voudrais aimer est si je n'étais pas en mesure de sortir de la zone de traîner dans la première place. :(
  • digitalMedia
  • a.k.a. dM
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Déc 29, 2003
  • Messages: 5169
  • Loc: SC-USA
  • Status: Offline

Message Août 26th, 2004, 11:51 am

En fait, la partie du code vous avez cité n'est que sur la "onPress événement. (Je pense Youd voulez de l'envelopper dans le "onEnterFrame" événement, ainsi, il a tiré à chaque frame. Ensuite, Youd de vouloir supprimer cet événement onRelease), si le fait de ne pas résoudre hitTest comme vrai, tombe automatiquement sur le bouton .

Vous pourriez faire de la région à hitTest contre et objet invisible, qui figure à l'intérieur du polygone, alors que votre polygone en tant que partie visuelle seulement.

Je ne cherche pas à vous donner une solution, juste une idée en vue d'une solution.
- dM
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Août 26th, 2004, 12:50 pm

J'ai essayé cela avec mcs nommé "carré" & "ovale", la place était limitée aux ovales, mais elle perd de biens similaires _droptarget :(
Code: [ Select ]
MovieClip.prototype.confineDrag = function(guide){
    this.onPress = function(){
        this.onMouseMove = function(){/*using mouse instead of enterFrame saves CPU on mouse idle*/
            if(guide.hitTest(_xmouse,_ymouse,true)){/*this use of hitTest compares _xmouse & _ymouse to cordinates of paramater "guide" which is a movieClip passed to the prototype, true tells flash to evaluate the actual shape of the guide instead of just the bounding rectangle.*/
                this._x = _xmouse;/*place this at xmMouse if hitTest returns true*/
                this._y = _ymouse;
            }
        }
    }
    this.onRelease = function(){
        delete this.onMouseMove;/*delete mouseMove event, this may need to be called onReleaseOutside as well, "this.onRelease=this.onReleaseOutside= function()" */
    }
}
square.confineDrag(_root.oval);/*apply prototype to square with oval as hitTest guide*/
  1. MovieClip.prototype.confineDrag = function(guide){
  2.     this.onPress = function(){
  3.         this.onMouseMove = function(){/*using mouse instead of enterFrame saves CPU on mouse idle*/
  4.             if(guide.hitTest(_xmouse,_ymouse,true)){/*this use of hitTest compares _xmouse & _ymouse to cordinates of paramater "guide" which is a movieClip passed to the prototype, true tells flash to evaluate the actual shape of the guide instead of just the bounding rectangle.*/
  5.                 this._x = _xmouse;/*place this at xmMouse if hitTest returns true*/
  6.                 this._y = _ymouse;
  7.             }
  8.         }
  9.     }
  10.     this.onRelease = function(){
  11.         delete this.onMouseMove;/*delete mouseMove event, this may need to be called onReleaseOutside as well, "this.onRelease=this.onReleaseOutside= function()" */
  12.     }
  13. }
  14. square.confineDrag(_root.oval);/*apply prototype to square with oval as hitTest guide*/


/ / Edition, a ajouté des commentaires :P
Strong with this one, the sudo is.
  • Shadowsong
  • Born
  • Born
  • No Avatar
  • Inscription: Aoû 25, 2004
  • Messages: 4
  • Loc: jamaica
  • Status: Offline

Message Août 26th, 2004, 2:39 pm

:shock: U guys are vraiment d'étoiles...Im en respect complet.

DigitalMedia: THANK U
joebert: THANK U

Eh bien, je sorta kinda got it de travail que j'ai utilisé exactement ce que joebert suggéré.

thanx again guys.

Code: [ Select ]
MovieClip.prototype.confineDrag = function(guide) {
  this.onPress = function(){
   this.onMouseMove = function(){
     if(guide.hitTest(_xmouse,_ymouse,true)){
      this._x = _xmouse;
      this._y = _ymouse;
     }
   }
  }
  this.onRelease = this.onReleaseOutside = function(){
   delete this.onMouseMove;
  }
}

btn.confineDrag(_root.polygon);
  1. MovieClip.prototype.confineDrag = function(guide) {
  2.   this.onPress = function(){
  3.    this.onMouseMove = function(){
  4.      if(guide.hitTest(_xmouse,_ymouse,true)){
  5.       this._x = _xmouse;
  6.       this._y = _ymouse;
  7.      }
  8.    }
  9.   }
  10.   this.onRelease = this.onReleaseOutside = function(){
  11.    delete this.onMouseMove;
  12.   }
  13. }
  14. btn.confineDrag(_root.polygon);

Afficher de l'information

  • Total des messages de ce sujet: 6 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 43 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC