ath92
%Europe/Berlin %827 %2010, 19:52
Eindelijk weer eens een AS-gerelateerde vraag van mij kant aan de actionscript-guru's op dit forum.
Dit keer werk mijn script volledig, alleen wordt het binnen 20 seconden al aardig traag. Ik denk zelf dat dit iets met garbage-collection te maken heeft, iemand die mij hier wat meer over kan vertellen (en over hoe ik dit probleem kan oplossen?)
Hier de source:
public class Strings extends BasicView
{
public var lineContainer:Lines3D = new Lines3D();
public var angles:Array = new Array();
private var numberOfSegments:uint = 6;
private var numberOfStrings:uint = 6;
private var lineMat:LineMaterial = new LineMaterial(0x000, 1);
private var v1:Vertex3D = new Vertex3D();
private var v2:Vertex3D = new Vertex3D();
private var line:Line3D;
public function Strings():void
{
init();
singleRender();
addEventListener(Event.ENTER_FRAME, tick);
}
private function init():void
{
for(var i:uint=0; i < numberOfSegments; i++){
angles[i] = 0;
}
scene.addChild(lineContainer);
}
private function tick(e:Event):void
{
for(var n:int = numberOfStrings-1; n>-1; n--){
if(n==0){
angles[0] = angles[0] + (Math.random()*0.2-0.1)*3.14;
} else {
angles[n] = angles[uint(n-1)];
}
//trace(angles[n]);
}
lineContainer.removeAllLines();
for(var i:uint = 0; i < numberOfSegments; i++){
for(var j:uint = 0; j<numberOfStrings; j++){
v1 = new Vertex3D(int(i*100-300), Math.cos(angles[i]) * int(j*30-75), Math.sin(angles[i]) * int(j*30-75));
v2 = new Vertex3D(int(i*100-200), Math.cos(angles[i+1]) * int(j*30-75), Math.sin(angles[i+1]) * int(j*30-75));
line = new Line3D(lineContainer, lineMat , 1, v1, v2);
lineContainer.addLine(line);
}
}
//render it all
camera.zoom = 100;
singleRender();
}
}
en hier wat het wordt:
http://www.ath92.nl/strings
Ik snap trouwens dat wat ik nu heb gemaakt ook zonder papervision had gekund, maar het is voor latere dingen belangrijk dat het wel in PV3D staat.
Dit keer werk mijn script volledig, alleen wordt het binnen 20 seconden al aardig traag. Ik denk zelf dat dit iets met garbage-collection te maken heeft, iemand die mij hier wat meer over kan vertellen (en over hoe ik dit probleem kan oplossen?)
Hier de source:
public class Strings extends BasicView
{
public var lineContainer:Lines3D = new Lines3D();
public var angles:Array = new Array();
private var numberOfSegments:uint = 6;
private var numberOfStrings:uint = 6;
private var lineMat:LineMaterial = new LineMaterial(0x000, 1);
private var v1:Vertex3D = new Vertex3D();
private var v2:Vertex3D = new Vertex3D();
private var line:Line3D;
public function Strings():void
{
init();
singleRender();
addEventListener(Event.ENTER_FRAME, tick);
}
private function init():void
{
for(var i:uint=0; i < numberOfSegments; i++){
angles[i] = 0;
}
scene.addChild(lineContainer);
}
private function tick(e:Event):void
{
for(var n:int = numberOfStrings-1; n>-1; n--){
if(n==0){
angles[0] = angles[0] + (Math.random()*0.2-0.1)*3.14;
} else {
angles[n] = angles[uint(n-1)];
}
//trace(angles[n]);
}
lineContainer.removeAllLines();
for(var i:uint = 0; i < numberOfSegments; i++){
for(var j:uint = 0; j<numberOfStrings; j++){
v1 = new Vertex3D(int(i*100-300), Math.cos(angles[i]) * int(j*30-75), Math.sin(angles[i]) * int(j*30-75));
v2 = new Vertex3D(int(i*100-200), Math.cos(angles[i+1]) * int(j*30-75), Math.sin(angles[i+1]) * int(j*30-75));
line = new Line3D(lineContainer, lineMat , 1, v1, v2);
lineContainer.addLine(line);
}
}
//render it all
camera.zoom = 100;
singleRender();
}
}
en hier wat het wordt:
http://www.ath92.nl/strings
Ik snap trouwens dat wat ik nu heb gemaakt ook zonder papervision had gekund, maar het is voor latere dingen belangrijk dat het wel in PV3D staat.