![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Я вот знаю пример с методом split(). Один дядька переписал его для AS2 и он стал работать намного шустрее чем родной flashовый метод. Это ещё на MX было.
Добавлено через 1 час 37 минут может мне кто нибудь помоч натянуть вот на это текстуру Добавлено через 1 час 38 минут import flash.display.BitmapData; import flash.geom.Matrix; import flash.filters.ColorMatrixFilter; var focalLength = 400; var lastMouseX = lastMouseY=kX=kY=0; //----------------------------------------------- function create(targed) { this.createEmptyMovieClip(targed,2); this[targed].param = {x:Stage.width/2, y:Stage.height/2, z:0}; this[targed].vertex = [{x:-100, y:-100, z:0}, {x:100, y:-100, z:0}, {x:100, y:100, z:0}, {x:-100, y:100, z:0}]; this[targed].onPress = function() { MouseMove = true; }; this[targed].onRelease = function() { MouseMove = false; }; this[targed].onReleaseOutside = function() { MouseMove = false; }; } function render(targed) { targed.clear(); targed.beginFill(0x0000FF,30); for (i=0; i<targed.vertex.length; i++) { var scale = focalLength/(focalLength-targed.vertex[i].z); x = targed.vertex[i].x*scale; y = targed.vertex[i].y*scale; if (i == 0) { targed.moveTo(x,y); } else { targed.lineTo(x,y); } } // targed._x = targed.param.x; targed._y = targed.param.y; } rotateY = function (targed, degree) { var sin = Math.sin(degree*Math.PI/180); var cos = Math.cos(degree*Math.PI/180); for (var i = 0; i<targed.vertex.length; i++) { var x = cos*targed.vertex[i].x-sin*targed.vertex[i].z; var z = cos*targed.vertex[i].z+sin*targed.vertex[i].x; targed.vertex[i].z = z; targed.vertex[i].x = x; } }; rotateX = function (targed, degree) { var sin = Math.sin(degree*Math.PI/180); var cos = Math.cos(degree*Math.PI/180); for (var i = 0; i<targed.vertex.length; i++) { var y = cos*targed.vertex[i].y-sin*targed.vertex[i].z; var z = cos*targed.vertex[i].z+sin*targed.vertex[i].y; targed.vertex[i].z = z; targed.vertex[i].y = y; } }; create("rektangl1"); this.onEnterFrame = function() { if (MouseMove) { kX = this._xmouse-lastMouseX; kY = this._ymouse-lastMouseY; lastMouseX = this._xmouse; lastMouseY = this._ymouse; } else { lastMouseX = this._xmouse; lastMouseY = this._ymouse; kX = kY=0; } rotateY(rektangl1,-kX/2); rotateX(rektangl1,-kY); render(rektangl1); };
__________________
Он манэ падмэ ХУМ! |
|
|||||
|
ветеран форума
|
Может
![]() В аттаче, собственно, Ваш же код но уже с текстуркой. Непугайтесь, немного изменил и оптимизировал Ваш код (без обид), но сильно не вникал... думаю можно еще немного ускорить просчеты.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
О! Зур рахмет. Что по нашему означает дословно - большое спасибо. А что void реально ускоряет вычисление?
__________________
Он манэ падмэ ХУМ! |
|
|||||
|
ветеран форума
|
Кто то тут говорил что строгая типизация ускоряет выполнение, но в данном случае это просто уже привычка )
Да и плюс есть некие правила хорошего тона в программировании.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 17.01.2009 в 00:50. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|