Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-08-2003, 09:28   #1 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
überschriebene mc.onPress methode

hallo allerseits,

gibt es eine möglichkeit die onPress Methode eines mc so zu überschreiben, daß ich in dieser methode selber angebe, wann (bei welchen coordinaten im mc) sich der cursor bei mouseover zu einer hand formen soll und wann nicht?

bsp:
ActionScript:
  1. myclass = function(){}
  2.  
  3. var mC = myclass.prototype = new MovieClip();
  4. Object.registerClass("mc",myclass);
  5.  
  6. mC.onPress = function(){
  7.     trace("mouse pressed");
  8. }
  9.  
  10. _root.attachMovie("mc","mcI",0);
  11. stop();

bis jetzt sieht es so aus, daß sich sobald sich die maus über den movieclip "mcI" bewegt, der cursor sich in eine hand verformt...

ich hätte aber gerne, daß sich der cursor nur bei mouseover eines bestimmten teils des movieclips "mcI" in eine hand verformt...
...ohne in diesem mc einen neuen mc anzulegen!

kann man also beeinflussen, wann bei der methode mc.onPress die hand angezeigt wird, und wann der normale cursor???


danke,

__benjamin
neo-labz ist offline   Mit Zitat antworten
Alt 27-08-2003, 09:33   #2 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
mit useHandCursor
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 27-08-2003, 09:49   #3 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
huch, ja stimmt...
*api durchlesen hätte wohl auch geholfen*

danke!


ich hätte vielleicht an eine etwas nativere beeinflussung dieses "useHandCursor" gedacht.

mit dieser function, muss ich ständig die koordinaten der _xmouse und _ymouse ausrechnen, in lokale werte umwandeln und dann entsprechend "usehandcursor" auf true oder false setzen................
neo-labz ist offline   Mit Zitat antworten
Alt 27-08-2003, 09:55   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
vielleicht mit hitArea? Aber das kommt dem Unter-MC nahe
Janoscharlipp ist offline   Mit Zitat antworten
Alt 27-08-2003, 10:59   #5 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
ja, aber hitArea ist auch wieder so eine highlevel api funktion, die an der performance zieht.

vielleicht denkt ihr euch, was das soll, aber für das spiel welches ich entwickel muss ich so ressourcenschonend wie möglich programmieren, und das fängt bei solchen "kleinigkeiten" an....
neo-labz ist offline   Mit Zitat antworten
Alt 27-08-2003, 11:06   #6 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
geschrieben von neo-labz
Zitat:
ich hätte aber gerne, daß sich der cursor nur bei mouseover eines bestimmten teils des movieclips "mcI" in eine hand verformt...
wenn du das so willst dann must du diesen teil halt prüfen.
wie soll flash wissen was du testen willst.
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 27-08-2003, 11:15   #7 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
klar

da war ich dann doch schon drauf gekommen...


ActionScript:
  1. myclass = function(){}
  2.  
  3. var mC = myclass.prototype = new MovieClip();
  4. Object.registerClass("mc",myclass);
  5.  
  6. mC.onPress = function(){
  7.       trace(_xmouse+"    "+_ymouse)
  8. };
  9. mC.onEnterFrame = function(){
  10.        
  11.         point = new object();
  12.         point.x = _root._xmouse;
  13.         point.y = _root._ymouse;
  14.         this.globalToLocal(point);
  15.  
  16.         if( (point.x > (this._width/2)) && (point.y > (this._height/2)) ){
  17.             this.useHandCursor = true
  18.         }else{
  19.             this.useHandCursor = false;
  20.         }
  21. };
  22.  
  23. _root.attachMovie("mc","mcI",0);
  24. mcI._x = 300;
  25. mcI._y = 230;
  26. stop();

jetzt wird nur im unteren rechten viertel des mcs (quadratischer natur) die hand angezeigt........

problem ist halt, daß jetzt bei jedem onenterframe gecheckt werden muss und das der performance nicht sonderlich zuträglich ist.

ich hätte da an eine einmalige änderung gedacht, die nicht immer wieder überprüft werden muss....

Geändert von neo-labz (27-08-2003 um 11:17 Uhr)
neo-labz ist offline   Mit Zitat antworten
Alt 27-08-2003, 11:32   #8 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
vieleicht wäre ein onMouseMove besser und so wenig wie möglich variablen anlegen.(performence)
ActionScript:
  1. myclass = function(){}
  2. var mC = myclass.prototype = new MovieClip();
  3. Object.registerClass("mc",myclass);
  4.  
  5. mC.onPress = function(){
  6.         trace(this._xmouse+"    "+this._ymouse);
  7. };
  8. mC.onMouseMove = function(){
  9.         if( ( this._xmouse > (this._width/2)) && (this._ymouse > (this._height/2)) ){
  10.                 this.useHandCursor = true;
  11.         }else{
  12.                 this.useHandCursor = false;
  13.         }
  14. };
  15. _root.attachMovie("mc","mcI",0);
  16. mcI._x = 100;
  17. mcI._y = 100;
  18. stop();
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 27-08-2003, 11:39   #9 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
yeah, danke....

das kommt meiner vorstellung schon näher...

wusste garnicht, daß aus einem mc heraus this._xmouse die x coord im mc anzeigt. interessant

Geändert von neo-labz (27-08-2003 um 11:41 Uhr)
neo-labz ist offline   Mit Zitat antworten
Alt 27-08-2003, 11:43   #10 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
du könntest noch das der onMouseMove erst ausgelöst wird
bei einem onRollOver den gleich wieder löschen und bei einem onRollOut wieder den onRollOver einschalten.
must halt testen was besser ist.
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 27-08-2003, 11:48   #11 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
wie schalt ich denn den on mousemove bei rollover an bzw. aus?

_kleine gedankenanstöße bewirken wunder ;)
neo-labz ist offline   Mit Zitat antworten
Alt 27-08-2003, 12:04   #12 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
bin mir nicht sicher ob das was bringt.
ActionScript:
  1. mC.onRollOver = function() {
  2.         this.onMouseMove = function(){
  3.             if( ( this._xmouse > (this._width/2)) && (this._ymouse > (this._height/2)) ){
  4.                 this.useHandCursor = true;
  5.             }else{
  6.                 this.useHandCursor = false;
  7.             }
  8.             }
  9.             this.onRollOut=function() {
  10.             delete this.onMouseMove
  11.             delete this.onRollOut
  12.             }
  13. }
[edit]bischen geändert
__________________
gruß Harry

Geändert von HAY (27-08-2003 um 12:13 Uhr)
HAY ist offline   Mit Zitat antworten
Alt 27-08-2003, 12:19   #13 (permalink)
frequent freak
 
Benutzerbild von neo-labz
 
Registriert seit: Jan 2003
Beiträge: 83
ja hervorragend,

vielen dank nocheinmal!
neo-labz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele