Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.01.2009, 14:05
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 51  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Да... не думал я, что этим паперВизоном так сложно пользоваться.
И так легко будет сделать вращающийся куб с гранями и кликами без нее.
http://murmadillo.tut.su/m/Main.swf

Код:
package {
 import flash.display.*;
  import flash.events.*;
  import flash.text.*;
  import flash.geom.Vector3D;
  
  import flash.filters.*;
  import flash.geom.Matrix3D;
  import flash.geom.Point;
  import __AS3__.vec.*;
  [SWF(width='800', height='600', backgroundColor='#123456', frameRate='12')]
   dynamic public class  Main extends MovieClip{ ;
    private var numVertices:int,
    numFaces:int,objRad:Number,vertsVec:Array,facesVec:Array,
    fLen:Number,spBoard:Sprite,shBack:Shape,spObject:Sprite,
    spObjImage:Sprite,doRotate:Boolean, prevX:Number, prevY:Number,
    facesColors:Array, distArray:Array, dispVec:Array,i:int,
    newVertsVec:Vector3D,spCircle:Array,spSortFace:Array,txt:TextField,
    autoX:int=0, autoY:int=0, mX:Boolean=false,
    bX:Boolean = false,
    mY:Boolean = false,
    bY:Boolean = false;
    
    
    public function Main() {
    numFaces = 6;
    objRad = 140;
    vertsVec= [];
    facesVec = [];
    spSortFace = [];
    distArray = [];
    newVertsVec = new Vector3D();
    
    spBoard = new Sprite();
    addChild(spBoard);
    
    spBoard.x=400;
    
    spBoard.y=300;
    
    facesColors = [0xFFFFCC, 0x00FF66, 0x0066FF, 0x33FFFF, 0x9A7DDF, 0xFFCCFF];
    
    spCircle = [];//грани куба
    for (i = 0; i < numFaces;i++){
    spCircle[i] = new Sprite();
    spSortFace[i] = new Sprite;//для сортировки граний
    spSortFace[i].graphics.lineStyle(3, 3, 0.5);
    spSortFace[i].x = objRad;
    spSortFace[i].y = objRad;
    spSortFace[i].z = spSortFace[i].rotationX = spSortFace[i].rotationY = spSortFace[i].rotationZ =0;
    //spSortFace[i].graphics.drawRect(0, 0, 2, 2);//квадратики в центре (закоментировать)
    txt = new TextField();
    txt.htmlText  = "<font face='Comic Sans MS' color='#"+
    int(facesColors[5-i]).toString(16)+"' size='100'>"+i;
    txt.autoSize = TextFieldAutoSize.LEFT;
    txt.scaleX = txt.scaleY = 2;
    txt.selectable = false;
    txt.mouseEnabled = false;
    txt.mouseWheelEnabled = false;
    spCircle[i].addChild(txt);//надписи
    
    spCircle[i].addChild(spSortFace[i]);
    //spCircle[i].graphics.lineStyle(3, 3);
    spCircle[i].graphics.beginFill(facesColors[i], 1);
    spCircle[i].graphics.drawRect(0, 0, objRad*2, objRad*2);
    
    spBoard.addChild(spCircle[i]);
    spCircle[i].name = "Клик на грани с номером"+i;
    spCircle[i].addEventListener(MouseEvent.CLICK, clickFunck);
    if (i == 0) spCircle[i].rotationZ = 0;
    if (i == 1) spCircle[i].rotationY = -90;
    if (i == 2) spCircle[i].rotationX = 90;
    spCircle[i].z = spCircle[i].y = spCircle[i].x = -objRad;
    if (i > 2) spCircle[i].z = spCircle[i].y = spCircle[i].x = objRad;
    if (i == 3) {
    spCircle[i].rotationX = -90;
    spCircle[i].rotationY = spCircle[i].rotationZ = 90;    
    }
    if (i == 4) {
    spCircle[i].rotationX = spCircle[i].rotationY = 360;
    spCircle[i].rotationZ = -180;
    }
    if (i == 5) {
    spCircle[i].rotationX = 90;
    spCircle[i].rotationY = 180;
    spCircle[i].rotationZ = -360;
    }
    }
    rotateObj(0, 0, 0);
    txt = new TextField();
    txt.textColor = 0xffffff;
    txt.text = "Привет";
    txt.autoSize = TextFieldAutoSize.LEFT;
    addChild(txt);
    stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMove);    
    addEventListener(Event.ENTER_FRAME, enterFrameFunc);
    }
  
   private function rotateObj(rotx:Number,roty:Number,rotz:Number):void {
    var curObjMat:Matrix3D;
    for (i = 0; i < numFaces; i++) {
    spObject = spCircle[i];
    spObject.transform.matrix3D.appendRotation(rotx,Vector3D.X_AXIS);
    spObject.transform.matrix3D.appendRotation(roty,Vector3D.Y_AXIS);
    spObject.transform.matrix3D.appendRotation(rotz,Vector3D.Z_AXIS);
    curObjMat = spObject.transform.matrix3D.clone();
    spCircle[i].transform.matrix3D = curObjMat;
    distArray[i] = [spSortFace[i].transform.getRelativeMatrix3D(this).position.z, i];
    //trace(spSortFace[i].transform.getRelativeMatrix3D(this).position.z);
    }
    distArray.sort(byDist);
    for (i=0; i < numFaces; i++) {//сортировка граней
    spBoard.setChildIndex(spCircle[distArray[i][1]],i);
    }
    }
  
  
   private 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; 
    } 
    }

  
   private function stageMove(e:MouseEvent):void {
    mX=bX=mY=bY=false;
    //txt.text=stage.mouseX+" "+stage.mouseY;
    if (stage.mouseX<250) mX=true;
    if (stage.mouseX>450) bX=true;     
    if (stage.mouseY<200) mY=true;
    if (stage.mouseY>400) bY=true;                    
    }
  
   private function clickFunck(e:MouseEvent):void {
    txt.text = e.target.name;                   
    }
  
    private function enterFrameFunc(evt:Event):void {
    autoX =  autoY = 0;
    if (mX==true) autoX+=5;
    if (bX==true) autoX-=5;      
    if (mY==true) autoY-=5;
    if (bY==true) autoY+=5;                  
    if(!doRotate) rotateObj(autoY,autoX, 0);
    //evt.updateAfterEvent();
    } 
  }
}

Старый 21.01.2009, 14:24
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 52  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
ХАХАХА!
Точно! Но сложные объекты с таким подходом, будет очень сложно делать... PaperVision хорош, когда делаются серьёзные вещи!

Старый 21.01.2009, 14:39
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 53  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Какие сложные? например чайники без нее легче делать...
http://murmadillo.tut.su/fla/10car3D.swf
Шары можно
http://murmadillo.tut.su/fla/cir10car3D.swf
Исходничок (чисто 10 методы)
http://murmadillo.tut.su/fla/cirCar3d.rar

Старый 21.01.2009, 14:48
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 54  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
Так это away3d! Это же альтернатива paperVision. Но paperVision быстрее! FPS даёт больше!

Старый 21.01.2009, 14:50
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 55  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Только где такой ужас применить то можно?
Можно (реальный) жизненный пример?

Я конечно прошу прощения, может это немного и резковато, понимаю что кто то работал, писал движек свой, но при такой подаче не вижу применения на реальных задачах.
PV3D этому движку фору даст в большинстве случаев.
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 21.01.2009 в 14:56.
Старый 21.01.2009, 15:06
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 56  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
http://blog.tartiflop.com/first-steps-in-away3d/ - Away3D - первые шаги
http://blog.tartiflop.com/first-steps-in-papervision3d/ - PaperVision3D - первые шаги.

Вот отличный сайт с примерами работ на PV3D http://blog.papervision3d.org/ Более того, на него натягиваются движки физики и трансформации. Вернее их везде приляпать можно, но всё же...

http://papervision2.com/ - сайт с отличными примерами для PV3D (Интересные примерно на с 4-й страницы начинаются)

Вот отличный сайт - http://blog.zupko.info/
Тут несколько хороших примеров есть - http://www.madvertices.com/

Вот отличный сайт http://pv3d.org/ - все примеры рабочие и можно чисто копировать и вставлять себе. Далее модифицировать

Старый 21.01.2009, 15:22
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 57  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>писал движек свой
Там всего то пара классов, вы их можете и сами написать за 10 минут, ну на доводку 10.

Старый 21.01.2009, 15:35
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 58  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
))) Верю, что с логикой у всех всё хорошо, с программированием тоже, но уверен, что движок типа PV3D, Away3D и Alternativa3D так просто не написать даже за месяц. Тем более над ними работаем одновременно много людей, а как говорится "Одна голова хорошо, а 2-е лучше!" Тем более, всегда следует не изобретать велосипед, а использовать готовый... пусть надо будет поставить свои колёса и цепь натянуть другую, но это правильнее! Ибо результативность больше. Пусть не в первом проекте, но во втором или 3-ем - точно!

Старый 21.01.2009, 15:39
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 59  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Самый удачный примерчик (там 9 пальм)

Инструкция: Надо кликнуть где нибуть мышкой,
потом нажать стрелочку на клавиатуре назад.
http://murmadillo.tut.su/m/PalmDoc.swf

Ну и вот туториал как делать куб
http://www.dnadillo.dn.ua/flex/3d-text-cube.html

>>Так это away3d! Это же альтернатива paperVision. Но paperVision быстрее! FPS даёт больше!

Так это не away3d! И вы ж понимаете, что ни о каком FPS и речи быть не может, потому, что все шуршит на бешенной скорости. (10 плеер)

А если еще использовать типизированные массивы <vector> то будет еще быстрее


Последний раз редактировалось Alex Lexcuk; 21.01.2009 в 15:42.
Старый 21.01.2009, 15:46
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 60  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
В 3d рулит растр.
__________________
Griver

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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