Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-07-2009, 16:26   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: NRW
Beiträge: 14
3D Würfel mit Bildern.

Hi, ich hab einen kleinen Code der mir einen 3D Würfel zaubert jetzt kann ich aber nur die 6 seiten des würfels farbig füllen...

Ich würde gerne das flash ein paar bilder aus einem ordner in die seiten des würfels importiert und nach einer zeit die bilder wehselt per zufallsprinzip. die Bilder wären dan .jpg alle gleich groß und von 001.jpg - 999.jpg benannt.
Also das mit dem zufall mus nicht unbedingt sein die Bilder können auch nacheinander wechseln, wichtig ist das sie wechseln.

Hoffe mir kann jemand helfen denke mit meinem Code ist das meiste schon getan.

Code:
var vertsArray:Array=[];

var facesArray:Array=[];



var fLen:Number=300;



var numVertices:uint=8;

var numFaces:uint=6;



var spBoard:Sprite=new Sprite();

this.addChild(spBoard);

spBoard.x=200;

spBoard.y=190;



var shBack:Shape=new Shape();

spBoard.addChild(shBack);



drawBack();



var shCube:Shape=new Shape();

spBoard.addChild(shCube);



var doRotate:Boolean=false;

var prevX:Number;

var prevY:Number;

var curTheta:Number=20;

var curPhi:Number=70;

var facesColors:Array=[0xFFFFff,0xffFFff,0xffffFF,0xffFFFF,0xffffff,0xffffff];



function drawBack():void {
	
	shBack.graphics.beginFill(0x000000);
	
	shBack.graphics.drawRect(-160,-160,320,320);
	
	shBack.graphics.endFill();
	
}



setVertices();

setFaces();

renderView(curTheta,curPhi);



function setVertices():void {
	
	vertsArray[0]=[70,-70,70];
	
	vertsArray[1]=[70,70,70];
	
	vertsArray[2]=[-70,70,70];
	
	vertsArray[3]=[-70,-70,70];
	
	vertsArray[4]=[70,-70,-70];
	
	vertsArray[5]=[70,70,-70];
	
	vertsArray[6]=[-70,70,-70];
	
	vertsArray[7]=[-70,-70,-70];
	
}



function setFaces():void {
	
	facesArray[0]=[0,4,5,1];
	
	facesArray[1]=[1,5,6,2];
	
	facesArray[2]=[2,6,7,3];
	
	facesArray[3]=[3,7,4,0];
	
	facesArray[4]=[4,5,6,7];
	
	facesArray[5]=[0,1,2,3];
	
}



function renderView(t:Number,p:Number):void {
	

	
	var i:int;
	
	var distArray=[];
	
	var dispArray=[];
	
	var vertsNewArray=[];
	
	var midPoint:Array=[];

	var dist:Number;
	
	var curFace:uint;
	

	
	t=t*Math.PI/180;
	
	p=p*Math.PI/180;
	

	
	shCube.graphics.clear();
	
	for(i=0;i<numVertices;i++){
		

		
		vertsNewArray[i]=pointNewView(vertsArray[i],t,p); 
		
	}
	
	
	
	for(i=0;i<numFaces;i++){
		

				
		midPoint[0]=(vertsNewArray[facesArray[i][0]][0]+vertsNewArray[facesArray[i][1]][0]+vertsNewArray[facesArray[i][2]][0]+vertsNewArray[facesArray[i][3]][0])/4;
		
		midPoint[1]=(vertsNewArray[facesArray[i][0]][1]+vertsNewArray[facesArray[i][1]][1]+vertsNewArray[facesArray[i][2]][1]+vertsNewArray[facesArray[i][3]][1])/4;
		
		midPoint[2]=(vertsNewArray[facesArray[i][0]][2]+vertsNewArray[facesArray[i][1]][2]+vertsNewArray[facesArray[i][2]][2]+vertsNewArray[facesArray[i][3]][2])/4;
		

		
		dist=Math.sqrt(Math.pow(fLen-midPoint[0],2)+Math.pow(midPoint[1],2)+Math.pow(midPoint[2],2));
		

		
		distArray[i]=[dist,i];
		
	}

	
	distArray.sort(byDist);

	for(i=0;i<numVertices;i++){
		

		
		dispArray[i]=[fLen/(fLen-vertsNewArray[i][0])*vertsNewArray[i][1],-fLen/(fLen-vertsNewArray[i][0])*vertsNewArray[i][2]];
		
	}
	
	for(i=0;i<numFaces;i++){

		
		shCube.graphics.lineStyle(1,0xCC0000);
		
		curFace=distArray[i][1]; 
		
		shCube.graphics.beginFill(facesColors[curFace],0.8);
		
		shCube.graphics.moveTo(dispArray[facesArray[curFace][0]][0],dispArray[facesArray[curFace][0]][1]);
		
		shCube.graphics.lineTo(dispArray[facesArray[curFace][1]][0],dispArray[facesArray[curFace][1]][1]);
		
		shCube.graphics.lineTo(dispArray[facesArray[curFace][2]][0],dispArray[facesArray[curFace][2]][1]);
		
		shCube.graphics.lineTo(dispArray[facesArray[curFace][3]][0],dispArray[facesArray[curFace][3]][1]);
		
		shCube.graphics.lineTo(dispArray[facesArray[curFace][0]][0],dispArray[facesArray[curFace][0]][1]);
		
		shCube.graphics.endFill();
		
	}
	
}



function byDist(v:Array,w:Array):Number {
	
	if (v[0]>w[0]){
		
		return -1;
		
	  } else if (v[0]<w[0]){
		
		return 1;
	
	   } else {
		
		return 0;
	  }
	  
  }


function pointNewView(v:Array,theta:Number,phi:Number):Array {
	
	var newCoords:Array=[];
	
	newCoords[0]=v[0]*Math.cos(theta)*Math.sin(phi)+v[1]*Math.sin(theta)*Math.sin(phi)+v[2]*Math.cos(phi);
	
	newCoords[1]=-v[0]*Math.sin(theta)+v[1]*Math.cos(theta);
	
	newCoords[2]=-v[0]*Math.cos(theta)*Math.cos(phi)-v[1]*Math.sin(theta)*Math.cos(phi)+v[2]*Math.sin(phi);
	
	return newCoords;
	
	
}
 
spBoard.addEventListener(MouseEvent.ROLL_OUT,boardOut);
		
spBoard.addEventListener(MouseEvent.MOUSE_MOVE,boardMove);
		
spBoard.addEventListener(MouseEvent.MOUSE_DOWN,boardDown);
		
spBoard.addEventListener(MouseEvent.MOUSE_UP,boardUp);
		
			
	
	function boardOut(e:MouseEvent):void {
			
			doRotate=false;
			
	}
	
	 function boardDown(e:MouseEvent):void {			
			
			prevX=spBoard.mouseX;
			
			prevY=spBoard.mouseY;
				
			doRotate=true;
			
	}
	
	function boardUp(e:MouseEvent):void {
			
			doRotate=false;
			
	}
	
	 function boardMove(e:MouseEvent):void {
		 
		        var locX:Number=prevX;
				
				var locY:Number=prevY;
		
				if(doRotate){
				
				prevX=spBoard.mouseX;
				
				prevY=spBoard.mouseY;
				
				curTheta+=(prevX-locX);
				
				curPhi+=(prevY-locY);
				
				renderView(curTheta,curPhi);
				
				e.updateAfterEvent();
				
				}
	}
MoCore ist offline   Mit Zitat antworten
Alt 07-07-2009, 16:30   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hi,
mal als gegenfrage. wieso so kompliziert?
muss das in as2 sein oder wieso nimmste dazu nicht eine der bekannten 3d engines? also z.B. papervision, oder away3d... ich glaube so simple dinge gehen damit sogar auch schon in as2

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 07-07-2009, 16:36   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: NRW
Beiträge: 14
Das sollte eig. as3 sein aber hab da nichts gefunden.. wo bekomme ich den eine simple engine her die sowas kann?
MoCore ist offline   Mit Zitat antworten
Alt 07-07-2009, 16:45   #4 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
einfach mal googlen nach den eben genannten begriffen?!?!
hier z.B.:
papervision

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 07-07-2009, 17:07   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: NRW
Beiträge: 14
ok, danke schonmal.. hab mir jetzt von papervision sone zip datei runtergeladen.. da sind as dateien in ordnern verteilt.. aber das verwirrt mich etwas. was soll ich den damit machen??
MoCore ist offline   Mit Zitat antworten
Alt 07-07-2009, 17:14   #6 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
diese as dateien nennt man klassen!
wenn du dich mit klassen/packages gar nicht auskennst musste dich wohl zumindest ein klein bissal schlau lesen bevor es los gehen kann...

gute, viele und vor allem auch schöne bsp's zu papervision findeste z.B. hier: http://pv3d.org/sitemap/

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 07-07-2009, 17:22   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: NRW
Beiträge: 14
hmm.. von klassen hab ich keine ahnung ^^ ich werd mich dan mal weiter schlau machen, danke dir

LG, Mo.
MoCore ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
3d würfel, ac3, bilder, flash, galerie

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 23:24 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele