Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   кубик (http://www.flasher.ru/forum/showthread.php?t=212329)

Dmitriy154 19.01.2016 11:29

кубик
 
Вложений: 1
Попробовал сделать кубик, нарисовал на сцене 6 граней (movieclip - s1, s2 ... s6) - разместил их как в кубике, пробую вращать - не получается правильно размещать их в слоях, есть ли возможность делать их с одной стороны не прозрачными. Может быть есть где-то исходник?
Вот мой код
Код AS3:

 
addEventListener(Event.ENTER_FRAME,ef);
 
function ef(e:Event):void
{
        cube.rotationX++;
        cube.rotationY++;
 
        if (cube.rotationX > 0 && cube.rotationX < 90)
        {
                if (cube.rotationY > 0 && cube.rotationY < 90)
                {
                        cube.addChild(cube.s1);
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s4);
                }
                if (cube.rotationY > 90 && cube.rotationY < 180)
                {
                        cube.addChild(cube.s4);
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s2);
                }
                if (cube.rotationY > 180 && cube.rotationY < 270)
                {
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s2);
                        cube.addChild(cube.s5);
                }
                if (cube.rotationY > 270 && cube.rotationY < 360)
                {
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s5);
                        cube.addChild(cube.s1);
                }
        }
 
        if (cube.rotationX > 90 && cube.rotationX < 180)
        {
                if (cube.rotationY > 0 && cube.rotationY < 90)
                {
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s4);
                }
                if (cube.rotationY > 90 && cube.rotationY < 180)
                {
                        cube.addChild(cube.s2);
                        cube.addChild(cube.s4);
                        cube.addChild(cube.s1);
                }
                if (cube.rotationY > 180 && cube.rotationY < 270)
                {
                        cube.addChild(cube.s2);
                        cube.addChild(cube.s1);
                        cube.addChild(cube.s5);
                }
                if (cube.rotationY > 270 && cube.rotationY < 360)
                {
                        cube.addChild(cube.s5);
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s3);
                }
        }
 
        if (cube.rotationX > 180 && cube.rotationX < 270)
        {
                if (cube.rotationY > 0 && cube.rotationY < 90)
                {
                        cube.addChild(cube.s4);
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s2);
                }
                if (cube.rotationY > 90 && cube.rotationY < 180)
                {
                        cube.addChild(cube.s1);
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s4);
                }
                if (cube.rotationY > 180 && cube.rotationY < 270)
                {
                        cube.addChild(cube.s1);
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s5);
                }
                if (cube.rotationY > 270 && cube.rotationY < 360)
                {
                        cube.addChild(cube.s5);
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s2);
                }
 
        }
 
 
        if (cube.rotationX > 270 && cube.rotationX < 360)
        {
                if (cube.rotationY > 0 && cube.rotationY < 90)
                {
                        cube.addChild(cube.s1);
                        cube.addChild(cube.s2);
                        cube.addChild(cube.s4);
                }
                if (cube.rotationY > 90 && cube.rotationY < 180)
                {
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s4);
                }
                if (cube.rotationY > 180 && cube.rotationY < 270)
                {
                        cube.addChild(cube.s3);
                        cube.addChild(cube.s6);
                        cube.addChild(cube.s5);
                }
                if (cube.rotationY > 270 && cube.rotationY < 360)
                {
                        cube.addChild(cube.s5);
                        cube.addChild(cube.s1);
                        cube.addChild(cube.s2);
                }
 
        }
 
}

А вот мое чудо:
kubik.swf   (18.5 Кб)

undefined 19.01.2016 14:25

Правильнее сортировать грани по z-координате, а лучше отсекать нелицевые грани.Оба метода неидеальны, но для кубика подойдет.Для чего-то сложнее копать в сторону agal/готовых 3д фреймворков.

silin 20.01.2016 16:03

http://silin.astraport.ru/#AS3/zod/simple/bin
только это недо-3Д и с самого начала никуда не годилось, а сейчас при наличии всяких Alternativ и Away3D, как-то совсем странно в эту сторону копать..

undefined 20.01.2016 16:12

Если человеку только кубик и нужен зачем же сразу тяжелую артиллерию подключать? :)

silin 20.01.2016 16:23

а дело в том, что в "тяжелой артиллерии" все проще и логичнее, чем в этом нативном псевдо 3Д, даже банальный кубик..,
это по личным ощущениям, канеш

Dmitriy154 20.01.2016 17:46

а где взять классы из import com.bit101.components.*;

ObOs 20.01.2016 18:11

Цитата:

Сообщение от Dmitriy154 (Сообщение 1190991)
а где взять классы из import com.bit101.components.*;

MinimalComps


Часовой пояс GMT +4, время: 07:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.