Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-08-2006, 19:24   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 138
"Echte" StarWars-Laufschrift

Hallo,

und... NEIN, es geht mir NICHT um das, was man in der Suche findet.

Das habe ich bereits alles auf verschiedene Arten und Weisen umgesetzt, aber das Ergebnis ist nicht so _ganz_ zufriedenstellend. Das liegt daran, dass die vorgeschlagenen Dinge alle nur pseudo-dreidimensional sind.

Gibt es eine einigermaßen machbare Möglichkeit, den Text tatsächlich durch die Programmierung einer dritten Raumachse darzustellen wie im Film?
Man hat ja auf dem Gebiet schon ganz andere Dinge gemacht, ich aber noch nicht. Deshalb weiß ich spontan keinen Ansatz.

Ich wäre sehr dankbar über Vorschläge.
MfG
FireShark
FireShark ist offline   Mit Zitat antworten
Alt 28-08-2006, 00:06   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Gibt es eine einigermaßen machbare Möglichkeit, den Text tatsächlich durch die Programmierung einer dritten Raumachse darzustellen wie im Film?
Klar, aber nicht mit Flash. Dazu wirst du spezielle Videosoftware benötigen.
  Mit Zitat antworten
Alt 28-08-2006, 00:37   #3 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
eigentlich müsste man da mit dem displacementmapfiloter was machen können, ist aber nunmal immer alles "pseudo" in flash.
michael ist offline   Mit Zitat antworten
Alt 28-08-2006, 01:04   #4 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
PHP-Code:
/********************************************** 
DistortImage class 
Availability 
Flash Player 6. 

Description 
Tesselate a movieclip into several triangles 
to allow free transform distorsion. 

Method summary for the DistortImage class 
getBounds - returns the original bounding box 
setTransform - distort image by the passsed 
rect coordinates. 

############################################### 
thanks to peter joel for his transformation 
math code and thomas wagner for the basic idea. 

(C) [url]http://www.andre-michelle.com[/url] 
    free to use ! 
**********************************************/ 


class DistortImage 

      private var 
parentMovieClip
      private var 
symbolIdString

      private var 
widthNumber
      private var 
heightNumber

      private var 
xMinNumberxMaxNumberyMinNumberyMaxNumber

      private var 
hsegNumber
      private var 
vsegNumber

      private var 
hsLenNumber
      private var 
vsLenNumber

      private var 
points: Array; 
      private var 
triAngles: Array; 

      function 
DistortImageparentMovieClipsymbolIdStringvsegNumberhsegNumber 
      { 
            
this.parent parent
            
this.symbolId symbolId
            
this.vseg vseg
            
this.hseg hseg

            if ( 
arguments.length 
            { 
                  
width arguments]; 
                  
height arguments]; 
            } 
            else 
            { 
                  
getImageSize(); 
            } 

            
init(); 
      } 

      private function 
getImageSize() 
      { 
            var 
getDimensionMovieClip parent.attachMoviesymbolId "getDimension" ); 
            
width       intgetDimension._width ); 
            
height      intgetDimension._height ); 
            
getDimension.removeMovieClip(); 
      } 

      private function 
init(): Void 
      

            
points = new Array(); 
            
triAngles = new Array(); 

            var 
ixNumber
            var 
iyNumber

            var 
w2Number width 2
            var 
h2Number height 2

            
hsLen width / ( vseg ); 
            
vsLen height / ( hseg ); 

            var 
xNumberyNumber

            for ( 
ix ix vseg ix++ ) 
            { 
                  for ( 
iy iy hseg iy++ ) 
                  { 
                        
ix hsLen
                        
iy vsLen
                        
points.push( { xxyysxxsy} ); 
                  } 
            } 

            for ( 
ix ix vseg ix++ ) 
            { 
                  for ( 
iy iy hseg iy++ ) 
                  { 
                        
createTriAngleixiy1, [ pointsiy ix * ( hseg ) ] , pointsiy ix * ( hseg ) + ] , pointsiy + ( ix ) * ( hseg ) ] ] ); 
                        
createTriAngleixiy,-1, [ pointsiy + ( ix ) * ( hseg ) + ] , pointsiy + ( ix ) * ( hseg ) ] , pointsiy ix * ( hseg ) + ] ] ); 
                  } 
            } 

            
xMin yMin 0
            
xMax width
            
yMax height

            
render(); 
      } 

      private function 
createTriAnglexNumberyNumberalignNumbervertices: Array ): Void 
      

            var 
nNumber
            var 
triAngleMovieClip

            
triAngles.length

            
triAngle parent.createEmptyMovieClip't_' ); 

            var 
innerMovieClip       triAngle.inner triAngle.createEmptyMovieClip'inner' ); 
            var 
maskMovieClip       inner.createEmptyMovieClip"mask" ); 
            var 
image                   inner.attachMoviesymbolId "img_" ); 

            
inner._rotation = -45

            
mask.beginFill); 
            
mask.moveTo( -, -); 
            
mask.lineTo101 , -); 
            
mask.lineTo( -101 ); 
            
mask.lineTo( -, -); 
            
mask.endFill(); 

            
triAngle.setMaskmask ); 

            
image._xscale 10000 hsLen
            
image._yscale 10000 vsLen

            if ( 
align == 
            { 
                  
image._x = -100
                  
image._y = -100
            } 
            else 
            { 
                  
image._rotation = -180
                  
image._x = ( ) * 100
                  
image._y = ( ) * 100
            } 

            
triAngle.vertices vertices
            
triAngles.pushtriAngle ); 
      } 

      function 
setTransformx0 y0 x1 y1 x2 y2 x3 y3 ): Void 
      

            var 
width
            var 
height
            var 
w2_0 x1-x0
            var 
w2_1 x2-x3
            var 
h2_0 y1-y0
            var 
h2_1 y2-y3

            for ( var 
p in points 
            { 
                  var 
point points[p]; 

                  var 
gx = ( point.xMin ) / w
                  var 
gy = ( point.yMin ) / h
                  var 
bx x0 gy * ( x3 x0 ); 
                  var 
by y0 gy * ( y3 y0 ); 

                  
point.sx bx gx * ( ( x1 gy * ( x2 x1 ) ) - bx ); 
                  
point.sy by gx * ( ( y1 gy * ( y2 y1 ) ) - by ); 
            } 

            
render(); 
      } 

      private function 
render(): Void 
      

            var 
tNumber
            var 
tmcMovieClip
            var 
innerMovieClip
            var 
vertices: Array; 
            var 
p0p1p2

            var 
atan2: Function = Math.atan2
            var 
sqrt: Function = Math.sqrt
            var 
cos: Function = Math.cos
            var 
tan: Function = Math.tan

            var 
arm,p0x,p0y,dx10,dy10,dx20,dy20,ap1,ap2,da12

            for ( 
t in triAngles 
            { 
                  
tmc triAngles[t]; 

                  
inner tmc.inner
                  
vertices tmc.vertices

                  
p0 vertices[0]; 
                  
p1 vertices[1]; 
                  
p2 vertices[2]; 

                  
tmc._rotation = (180/Math.PI)*(-(da12=((ap1=atan2(dy10=p1.sy-(p0y=tmc._y=p0.sy),dx10=p1.sx-(p0x=tmc._x=p0.sx)))-(ap2=atan2(dy20=p2.sy-p0y,dx20=p2.sx-p0x)))/2)+ap1); 
                  
tmc._yscale 100 tanda12 ); 
                  
inner._xscale sqrt(dx20*dx20+dy20*dy20)/(arm=100/(Math.SQRT1_2 2)/cos(da12))*100.5
                  
inner._yscale sqrt(dx10*dx10+dy10*dy10)/arm*100.5

            } 
      } 

      function 
getBounds(): Object 
      

            return { 
xMinxMinxMaxxMaxyMinyMinyMaxyMax }; 
      } 

treibt sich der author nicht hier im forum rum ?
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)

Geändert von agedoubleju (28-08-2006 um 12:01 Uhr)
Xeef ist offline   Mit Zitat antworten
Alt 28-08-2006, 01:04   #5 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 138
Okay, trotzdem danke Euch.

Dann wird es wohl so genügen müssen.

MfG
FireShark

EDIT: Oha, das über mir kam grad eine Sekunde nach mir. Ich habe erstmal gar nicht geschaltet. Wenn das mal funktioniert, wäre das der HAMMER!! Ich bedanke mich und werde das ganze bei nächster Gelegenheit ausprobieren. KRASS!!

Nochmal EDIT: Hm, da blick' ich nie durch. Gibt es wenigstens eine Möglichkeit, das Sctipt als ganzes zu kopieren? Das klappt nämlich momentan nicht; ich müsste jede Zeile einzeln kopieren. Aber davon abgesehen ist das eh viel zu heftiger Stuff...

Geändert von FireShark (28-08-2006 um 01:17 Uhr)
FireShark ist offline   Mit Zitat antworten
Alt 28-08-2006, 12:03   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Hab das Script zum Kopieren mal auf PHP-Tags umgestellt. @Xeef: hast du für Fireshark auch noch ein Beispiel, wie man die Klasse aufruft?
  Mit Zitat antworten
Alt 28-08-2006, 12:36   #7 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
hab ich
wolt ich posten ist aber zu gross

Hmmmm mall ein bischen rum editiren

mom

...zzz.zzz.


Grrrr

ich krieg das nicht klein genug um es als ZIP hoch zu laden


hier der code

PHP-Code:
import DistortImage;
trace("START");
MovieClip.prototype.reset = function() {
    for (
curClip in this) {
        if (
typeof (this[curClip]) == "movieclip") {
            
this[curClip].reset();
            
this[curClip].clear();
        }
    }
};
this.createEmptyMovieClip("theScene"1);
theScene._x 250;
theScene._y 200;
focalLength 700;
var 
clip this.theScene.createEmptyMovieClip("face0"10);
//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var plane:DistortImage = new DistortImage(clip'image'11);
clip.plane plane;
var 
clip this.theScene.createEmptyMovieClip("face1"11);
//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var plane:DistortImage = new DistortImage(clip'face4'11);
clip.plane plane;
var 
clip this.theScene.createEmptyMovieClip("face2"12);
//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var plane:DistortImage = new DistortImage(clip'face3'11);
clip.plane plane;
var 
clip this.theScene.createEmptyMovieClip("face3"13);
//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var plane:DistortImage = new DistortImage(clip'texture3'11);
clip.plane plane;
var 
clip this.theScene.createEmptyMovieClip("face4"14);
//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var plane:DistortImage = new DistortImage(clip'texture4'11);
clip.plane plane;
var 
clip this.theScene.createEmptyMovieClip("face5"15);
//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var plane:DistortImage = new DistortImage(clip'face2'11);
clip.plane plane;
make3DPoint = function (xyz) {
    var 
point = new Object();
    
point.x;
    
point.y;
    
point.z;
    return 
point;
};
make2DPoint = function (xyz) {
    var 
point = new Object();
    
point.x;
    
point.y;
    
point.z;
    return 
point;
};
isVisibleBetween = function (abc) {
    
//if (((b.y-a.y)/(b.x-a.x)-(c.y-a.y)/(c.x-a.x)<0) ^ (a.x<=b.x == a.x>c.x)) 
    
var p0x:Number a.xp0y:Number a.y;
    var 
p1x:Number b.xp1y:Number b.y;
    var 
p2x:Number c.xp2y:Number c.y;
    var 
z:Number = (p1x-p0x)*(p2y-p0y)-(p1y-p0y)*(p2x-p0x);
    if (
z>0) {
        return 
true;
    } else {
        return 
false;
    }
};
drawFilledSquare = function (clipabcd) {
    
//clip.lineStyle(2,0,100);
    
var z:Number a.z+b.z+c.z+d.z;
    
clip.swapDepths(Math.floor(z*10));
    
clip.plane.setTransform(a.xa.yb.xb.yc.xc.yd.xd.y);
};
Transform3DPointsTo2DPoints = function (pointsaxisRotations) {
    var 
TransformedPointsArray = [];
    var 
sx Math.sin(axisRotations.x);
    var 
cx Math.cos(axisRotations.x);
    var 
sy Math.sin(axisRotations.y);
    var 
cy Math.cos(axisRotations.y);
    var 
sz Math.sin(axisRotations.z);
    var 
cz Math.cos(axisRotations.z);
    var 
xyzxyxzyxyzzxzyscaleFactor;
    var 
points.length;
    while (
i--) {
        
points[i].x;
        
points[i].y;
        
points[i].z;
        
// rotation around x
        
xy cx*y-sx*z;
        
xz sx*y+cx*z;
        
// rotation around y
        
yz cy*xz-sy*x;
        
yx sy*xz+cy*x;
        
// rotation around z
        
zx cz*yx-sz*xy;
        
zy sz*yx+cz*xy;
        
scaleFactor focalLength/(focalLength+yz);
        if ((
points[i].crtxoffset += points[i].xsens)>=points[i].xoffset || points[i].crtxoffset<=-points[i].xoffset) {
            
points[i].xsens = -points[i].xsens;
        }
        if ((
points[i].crtyoffset += points[i].ysens)>=points[i].yoffset || points[i].crtyoffset<=-points[i].yoffset) {
            
points[i].ysens = -points[i].ysens;
        }
        
zx*scaleFactor+points[i].crtxoffset;
        
zy*scaleFactor+points[i].crtyoffset;
        
yz;
        
TransformedPointsArray[i] = make2DPoint(xy, -zscaleFactor);
    }
    return 
TransformedPointsArray;
};
pointsArray = [make3DPoint(-100, -100, -100), make3DPoint(100, -100, -100), make3DPoint(100, -100100), make3DPoint(-100, -100100), make3DPoint(-100100, -100), make3DPoint(100100, -100), make3DPoint(100100100), make3DPoint(-100100100)];
for (var 
0i<pointsArray.lengthi++) {
    
pointsArray[i].crtxoffset pointsArray[i].crtyoffset=0;
    
pointsArray[i].crtyoffset;
    
pointsArray[i].xoffset Math.random()*50;
    
pointsArray[i].yoffset Math.random()*30;
    
pointsArray[i].xsens pointsArray[i].ysens=1;
}
//this.theScene.resetAll();
//this.theScene.resetAll();
this.reset();
cubeAxisRotations make3DPoint(000);
//this.theScene.rotateCube = function()
rotateCube = function () {
    
//this.reset();
    
cubeAxisRotations.-= this._xmouse/4000;
    
cubeAxisRotations.+= this._ymouse/4000;
    var 
pts2D Transform3DPointsTo2DPoints(pointsArraycubeAxisRotations);
    
drawFilledSquare(this.face0pts2D[0], pts2D[3], pts2D[2], pts2D[1]);
    
drawFilledSquare(this.face1pts2D[4], pts2D[5], pts2D[6], pts2D[7]);
    
drawFilledSquare(this.face2pts2D[0], pts2D[4], pts2D[7], pts2D[3]);
    
drawFilledSquare(this.face3pts2D[3], pts2D[7], pts2D[6], pts2D[2]);
    
drawFilledSquare(this.face4pts2D[2], pts2D[6], pts2D[5], pts2D[1]);
    
drawFilledSquare(this.face5pts2D[1], pts2D[5], pts2D[4], pts2D[0]);
};
//setInterval(this.theScene,"rotateCube", 50, null);
theScene.onEnterFrame rotateCube
es produciert ein 3D wurfel mit texturirten seiten
das hin und her wabeln ist beabsichtigt
code ist aus der selben quele wie die classe
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 28-08-2006, 15:21   #8 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 138
Wohoo. Heftelig.

Besten Dank nochmals. Mal sehen, was ich daraus mitnehmen kann.

MfG
FireShark
FireShark ist offline   Mit Zitat antworten
Alt 29-08-2006, 10:37   #9 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
hallo Xeef,

was muss ich tun, um mittels deines code-beispiels etwas zu sehen?

ich schätze mal, dass ich in der fla noch den einen oder andern movieclip erzeugen muss, stimmts?

nach copy&paste der klasse von andre und deinem beispiel as passiert ausser einem getracten start noch nichts..

wäre fein, wenn du mir da nochmal kurz auf die sprünge helfen könntest!

danke & grüssle,
quasi
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 29-08-2006, 12:17   #10 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
weder die classe noch das andere ist von mir

//-- args: parent , symbolId , widthSegments , heightSegments [ ,width, height ]
var planeistortImage = new DistortImage(clip, 'image', 1, 1);

das bolde ist die linkage identifier eines clips in der library
*6 fur jede seite des wurfels eine
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 29-08-2006, 13:07   #11 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
alles klar!

super, danke dir!
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono 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 06:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele