Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-01-2006, 17:42   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 211
Landkarte

Hallo, bastle gerade an einer Karte, die mit 955x592 erstmals größer ist wie der Bereich, den der User zu Gesicht bekommt. Das Ganze wird durch eine Maske (637x287) erledigt. Dennoch soll der User die komplette Karte sehen können. Dies möchte ich durch eine Mausverfolgerfunktion erledigen:

PHP-Code:
karte_mc.onEnterFrame = function () {
    var 
delay 50;
    var 
dx this._xmouse;
    var 
dy this._ymouse;
    
this._x this._x + (dx/delay);
    
this._y this._y + (dy/delay);
//Begrenzungsversuch
    
if (Karte_mc._x 0) {
        
stop();
    } else if (
karte_mc._x = -318){
        
stop();
    } else if (
karte_mc._y 305){
        
stop();
    } else if (
karte_mc._y 0){
        
stop();
    };

mein Problem ist die Begrenzung: Die Karte soll mit ihren Rändern an den Maskenrändern zum stehen kommen sodass der User immer die Karte in der Größe der Maske sieht und durch Mausbewegung nur den Inhalt verschiebt. Wie sage ich der Karte, dass sie mit ihren Rändern nicht die Ränder der Maske "durchbrechen" soll. Somit würde dann der User quasi das sehen was hinter der Karte liegt; was nicht sein soll.

Vielen Dank im Voraus
thomas_as ist offline   Mit Zitat antworten
Alt 26-01-2006, 18:27   #2 (permalink)
pensionist
 
Benutzerbild von troner
 
Registriert seit: Jan 2003
Ort: Thalheim b. Wels
Beiträge: 568
hallo

die if abfrage würd ich in die function packen und einfach checken ob das ding gewisse kordinaten erreicht hat wenn nicht ausführen!

ActionScript:
  1. karte_mc.onEnterFrame = function() {
  2.     var delay = 50;
  3.     var dx = this._xmouse;
  4.     var dy = this._ymouse;
  5.     if(this._x>0 || this._x<=this._width) this._x += dx/delay;
  6.     if(this._y>0 || this._y<=this._height) this._y += dy/delay;
  7. }

mfg
troner ist offline   Mit Zitat antworten
Alt 27-01-2006, 08:25   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 211
Danke erstmals. Funktioniert aber leider nicht so einfach. Habe das nun mit verschiedenen Werten, Kombinationen und >/</>=/<= sowiwe der Verneinung ! ausprobiert, jedoch stets ohne Erfolg.

Mit diesem Ansatz wollte ich zuletzt die linke und die obere Kante sichern:
PHP-Code:
    if(this._x<=0this._x += dx/delay;
    if(
this._y<=0this._y += dy/delay
leider auch erfolglos.

Kann es an der Positionierung des Karten-Movieclips in der Timeline liegen? Wenn ja, könnte ich den Clip ja über AS auf die Bühne holen, nur wie maskiere ich ihn über AS? Durch ein "createEmptyMovieClip"? Nur wie gehe ich dann weiter bzgl. Positionierung, Maskierung und "Startbild" (quasi die Startposition der Karte). Wäre es dann möglich zu sagen die Koordinate x=Wert b und y=Wert b soll dann, wenn der Mauszeiger nicht im Bereich der Karte ist, selbstständig am Zentrum (Mittelpunkt der Maske) ausgerichtet werden. Sind alles Ideen, nur mangelt es halt noch an der Umsetzung des Codes...

Vielen Dank im Voraus

Vielen Dank im Voraus
thomas_as ist offline   Mit Zitat antworten
Alt 27-01-2006, 08:28   #4 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Lass doch mal ein bisschen mehr Code blicken oder noch besser ein File!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 27-01-2006, 10:06   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 211
PHP-Code:
karte_mc.onEnterFrame = function() {
    var 
delay 50//Später bei 50; zum schnelleren Testen heruntergesetzt
    
var dx this._xmouse;
    var 
dy this._ymouse;
    
//Wo müssen die {} bei 2x if hin??
    
if(this._x<=0this._x += dx/delay;
    if(
this._y<=0this._y += dy/delay

    };
}
/*
VERSUCH 1
this._x = this._x + (dx/delay);
this._y = this._y + (dy/delay);
### Läuft an allen Seiten rein; keine Begrenzung.
*/
/*
VERSUCH 2
this._x = this._x + (dx/delay)(false, 0, -318, 637, 287);
this._y = this._y + (dy/delay)(false, 0, 305, 637, 287);
###Keine Animation.
*/
/*
VERSUCH 3
         if(this._x>0 || this._x<=this._width) this._x += dx/delay;
         if(this._y>0 || this._y<=this._height) this._y += dy/delay;
### Läuft an allen Seiten rein; keine Begrenzung. (Troners Vorschlag.) 
*/
/*
VERSUCH 3
    if(this._x=0 && this._x=-318 && this._y=0 && this._y=-318) {
        this._x = this._x; // !+ (dx/delay)
this._y = this._y !; // !+ (dx/delay)
    }else{
    this._x = this._x + (dx/delay);
this._y = this._y + (dy/delay);
### Keine Animation 
*/
/*
VERSUCH 5
if(this._x<=0) this._x += dx/delay;
    if(this._y<=0) this._y += dy/delay; 
    ### Keine Bewegung 
*/ 
Danke!

Geändert von thomas_as (27-01-2006 um 17:50 Uhr)
thomas_as 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 19:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele