Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-05-2005, 23:29   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 13
super samurai 3d welt erweitern

vielleicht kennt ja jemand das tolle buch namens super samurai für flash. ich habe auf macromedia den artikel gefunden der beschreibt wie man einen 3d raum erstellt (http://www.macromedia.com/devnet/mx/...urai_ch2.html). falls jemand mit diesem kapitel vertraut ist hätte ich eine frage und zwar folgende:

ich kenne das ganze script ziemlich gut und es ist auch ausführlich erklärt jedoch überfordern mich all die mathematischen erklärungen ein wenig und weiss nicht weiter. es geht darum dass wenn ich auf einen der button klicke sollte sich er sich zu diesem inhalt bewegen und wenn ich den selben button nochmals klicke sollte er zu der position bewegen wo sich das objekt befindet.

mein grösstest problem ist es die objekt an die genau position zu bewgen in x,y,z koordinaten und was ich auch noch möchte ist dass die bewegung gegen ende langsam abbremst.

ich poste hier mal das script vielleicht kann ja jemand etwas damit anfangen. ich wäre jedenfalls für jede hilfe sehr dankbar!

PHP-Code:
szeneBreite Stage.width;
szeneHoehe Stage.height;
initGrafik();
// grafik iniziialisieren
function initGrafik() {
    
// einstellen
    
zeit 30;
    
abbremsung 3;
    
500;
    
abstand 1000;
    
spielerHoehe 0;
    
ursprungX szeneBreite/2;
    
ursprungY szeneHoehe/2;
    
anzahlObjekte 0;
    
anzahlObjekteBeginn 1;
    
// konstanten
    
trans Math.PI/180;
    
translationAnstieg 10;
    
translationX 0;
    
translationZ 0;
    
rotationAnstieg 200;
    
rotationWinkelY 0;
    
objektPosition = new Array();
    
// nur nötig wenn der array nicht automatisch erstellt wird
    
arrayBezeichnung = new Array("Home""News""Portfolio""Locations""Staff");
    
arrayLink = new Array("http://www.home.com""http://www.news.com""http://www.portfolio.com""http://www.locations.com""http://www.staff.com");
    for (var 
0i<anzahlObjekteBeginni++) {
        
hinzufuegenGrafik();
    }
    
//
    
navigationListener = new Object();
    
Key.addListener(navigationListener);
    
//renderGrafikIntervall = setInterval(renderGrafik, 50);
    
renderGrafik();
}
// grafik für neue abteilung hinzufügen
function hinzufuegenGrafik() {
    
_root.attachMovie("objekt""objekt"+anzahlObjekteanzahlObjekte);
    
_root["objekt"+anzahlObjekte]._visible false;
    
//
    
objektPosition[anzahlObjekte] = new Object();
    
// übergebene variablen
    
objektPosition[anzahlObjekte].normaleGroesse 100;
    
objektPosition[anzahlObjekte].id anzahlObjekte;
    
objektPosition[anzahlObjekte].bezeichnung arrayBezeichnung[anzahlObjekte];
    
objektPosition[anzahlObjekte].link arrayLink[anzahlObjekte];
    
// übergebene positionen
    
objektPosition[anzahlObjekte].Math.random()*500-250;
    
objektPosition[anzahlObjekte].0;
    if (
anzahlObjekte == 0) {
        
objektPosition[anzahlObjekte].D;
    } else {
        
objektPosition[anzahlObjekte].= -abstand+D;
    }
    
objektPosition[anzahlObjekte].z;
    
//auf film anwenden
    
_root["objekt"+anzahlObjekte].textName.text objektPosition[anzahlObjekte].bezeichnung;
    
_root["objekt"+anzahlObjekte].textUrl.text objektPosition[anzahlObjekte].link;
    
//
    
anzahlObjekte++;
}
// zu neuer abteilung bewegen
function renderGrafik(objektNummerrichtungobjektName) {
    
_root.onEnterFrame = function() {
        
sinY Math.sin(rotationWinkelY*trans);
        
cosY Math.cos(rotationWinkelY*trans);
        for (var 
0j<anzahlObjektej++) {
            
tx objektPosition[j].x+translationX;
            
ty objektPosition[j].y;
            
tz objektPosition[j].z+translationZ;
            
rx tx*cosY-tz*sinY;
            
ry ty;
            
rz tz*cosY+tx*sinY;
            
objektPosition[j].rx;
            
objektPosition[j].ry;
            
objektPosition[j].rz;
            
ry -= spielerHoehe;
            
rz -= D;
            if (
rz<-D) {
                
_root["objekt"+j]._visible false;
            } else {
                
perspektiveRate D/(D+(rz));
                
perspektiveX ursprungX+rx*perspektiveRate;
                
perspektiveY ursprungY-ry*perspektiveRate;
                
perspektiveSkalierung objektPosition[j].normaleGroesse*perspektiveRate;
                if (((
perspektiveX+perspektiveSkalierung)<(szeneBreite-bildschirmBreite)) || ((perspektiveX-perspektiveSkalierung)>bildschirmBreite)) {
                    
_root["objekt"+j]._visible false;
                } else {
                    
_root["objekt"+j]._visible true;
                    
_root["objekt"+j]._x perspektiveX;
                    
_root["objekt"+j]._y perspektiveY;
                    
_root["objekt"+j]._xscale _root["objekt"+j]._yscale=perspektiveSkalierung;
                    
_root["objekt"+j].swapDepths(-rz);
                    if (
objektPosition[objektNummer].z<(D+1)) {
                        
translationZ 21.57;
                        
trace(objektPosition[objektNummer].z)
                    } else if (
objektPosition[objektNummer].z>(D+1)) {
                        
translationZ = -21.57;
                    } else {
                        
delete this.onEnterFrame;
                    }
                }
            }
        }
    };
}
// zu neuer abteilung wechseln
function wechselGrafik(objektName) {
    if (
this.aufgerufenId) {
        var 
objektNummer this.aufgerufenId;
    } else {
        
this.aufgerufenId anzahlObjekte;
        var 
objektNummer this.aufgerufenId;
        
hinzufuegenGrafik();
    }
    
renderGrafik(objektNummerrichtungobjektName);
}
// knopf aktionen um die abteilungen aufzurufen
_root.knopf1.onRelease wechselGrafik;
_root.knopf2.onRelease wechselGrafik;
_root.knopf3.onRelease wechselGrafik
Angehängte Dateien
Dateityp: zip welt.zip (8,7 KB, 25x aufgerufen)

Geändert von negrito (04-05-2005 um 23:32 Uhr)
negrito 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 08:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele