Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Эффект цифр в бильярде (http://www.flasher.ru/forum/showthread.php?t=99935)

Elodreid 16.08.2007 05:17

Эффект цифр в бильярде
 
Как сделать цифры на шарах? Чтобы они крутились.. мне нужна математика)

Wolsh 16.08.2007 10:18

Смотря на какую степень реалистичности Вы расчитываете. Можно же по-разному сделать. Цифры должны реально во всех плоскостях крутиться и деформироваться так как будто они на шаре или это необязательно? Вам нужен расчет реальной физики вращения шара в зависимости от встреченных препятствий? Уточните вопрос, пожалуйста.

Elodreid 16.08.2007 10:24

ну мне бы хотя бы просто поворачивать логотип без всяких подкрученых ударов)

Жень Шень 16.08.2007 11:07

Привет!
Адобэ-макромедия уже "нарисовала" такое. Смотреть у себя на компе:
C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\Graphics\AnimationAndGradients

CrazyFlasher 16.08.2007 11:08

делать перемещения квадратной картинки с площадью значительнее больше шара под маской.

www.flasher.pizza.ee/newArc/pool.html - ну вот собвтвенно суть моей идеи...побыстрому нарисовал
www.flasher.pizza.ee/newArc/pool.fla - исходник

Elodreid 16.08.2007 11:23

Жень Шень, скинь это (у меня урезаная версия), но мне кажется ты не о том).

Как сделать графику я понимаю, но вот на какой угол её поворачивать при ударе хз, так как движение шаров сделано сменой сетки координат относительно каждого шара (тут на форуме этот способ не раз уже обсуждался)

Жень Шень 16.08.2007 18:26

Вложений: 1
Вот этот пример.

Elodreid 17.08.2007 01:39

Решил по другому сделать) Просто при ударе рандомно (random(360) - 180) разворачивать в мувике ball мувик wheel, смотрится нормально, но рвано при ударе :(

Как сделать чтобы он плавно разворачивал? Я просто в основном на php программирую

Mr. Fixit 17.08.2007 02:19

Код:

UpdateAfterEvent();

CrazyFlasher 17.08.2007 10:04

я честно говоря до сих пор не понимаю нахер эта функция. обхожусь без неё

Wolsh 17.08.2007 10:14

А Вы сразу на этот угол поворачиваете из исходного??? Конечно рвано :) надо же описать последовательность, если хотите плавно. Через Tween наверно можно, а можно и просто на onEnterFrame (скажем, кадров 3-5), - делите разницу между исходным углом и конечным-рэндомным, и на каждый кадр поворачиваете на сегмент. Когда угол достигнут (или просто счетчик в onEnterFrame поставить) - onEnterFrame удалить.
______________
2 CrazyFlasher - хорошо вам в Таллинне, а у нас приходится использовать :)

Elodreid 17.08.2007 11:17

Листал хелп про таймеры нашел только функу для повторения функций с определеной задержкой использовать её?

Просто в начале подумал сделать циклом, но я не знаю как его тормозить..


пойдет такая конструкция:

Код:

функция удара шаров
  ...
  сетинтервал 100 на функу поворота
  ...

функция поворота
цикл прибавляющий по 5 градусов пока не дойдет до нужного цисла

если, например, будет 4 шара сильно ли загрузит комп?

Elodreid 17.08.2007 11:19

Wolsh, я поворот делаю _rotate, так как анимационо его не реализовать потому, что там рандом.

CrazyFlasher 17.08.2007 11:43

2 Wolsh: приведи хоть один пример, когда без updateAfterEvent() не обойтись и она является лучшим вариантом

CGandA 17.08.2007 12:10

Цитата:

Сообщение от CrazyFlasher
приведи хоть один пример, когда без updateAfterEvent() не обойтись и она является лучшим вариантом

Самый простой вариант. Свой курсор во флэше
Код:

Mouse.hide();
this.createEmptyMovieClip("square_mc",this.getNextHighestDepth());
square_mc.beginFill(0xFF0000);
square_mc.moveTo(10,10);
square_mc.lineTo(100,10);
square_mc.lineTo(100,100);
square_mc.lineTo(10,100);
square_mc.lineTo(10,10);
square_mc.endFill();
onMouseMove = function () {
        square_mc._x = _xmouse;
        square_mc._y = _ymouse;
        //updateAfterEvent();
};

Сравните движение квадрата с и без updateAfterEvent();

Wolsh 17.08.2007 13:37

Не засоряем тему.
Ты наверно неправильно меня понял.
Вместо цикла используется onEnterFrame, т.е. типа "на каждый кадр"
Соответственно скорости кадров и времени, отводимом тобой на поворот, смотришь на сколько кадров его разбить. Допустим, у тебя угол 0, а рэндом выдал 240 и пять кадров оптимально по скорости. Значит пишешь типа
Код:

num_cad = 0
ball_mc.onEnterFrame = function(){
num_cad++
this.wheel_mc._rotation+=48 //  240/5
num_cad>4 ? delete ball_mc.onEnterFrame : null;
}

А циклом или интервалом не надо - в данном случае это зло
_________________

Апдейт
Вот примерчик набросал тебе.

Dendroid 17.08.2007 17:38

Твины, маски, квадратные картинки? Это не наш метод...

Вот, ещё под AS1 делал: http://flashpanoramas.com/billiard9fp.swf
Никаких твинов или масок, честные векторные 3D текстуры. ;) Чтобы начать сингл-игру, надо нажать самую длинную кнопку: "Creer une partie en mode solo". Можно использовать колесо мыши, чтобы увеличить zoom.

Только тормозит на слабых компах (хотя и так физика упрощалась сильно). Так что по-хорошему это надо реализовывать на AS3 сейчас (когда-нибудь может перепишу). :)

Dendroid 17.08.2007 17:40

Напишу вам 3D-движок для шаров на AS3.
Но дорого, блин. :D

CrazyFlasher 17.08.2007 18:58

2 CGandA - можно фпс выше поставить, а другие анимашки делать не enterframe, а используя интервал, чтоб с корость не нарушалась при смене фпс...ну вот...вопрос открыт про updateAfterEvent() ;-) не нужна она =))
Всё...больше не флеймю =)

Elodreid 20.08.2007 00:51

Может поправите, чтобы не дергались? Они то норм, то нет :(

file

Зы или подскажите как поправить.

Wolsh 22.08.2007 11:47

А что это будет - бильярд или спортлото? Потому что у Вас ведь скорость вращения шаров (то есть движение логотипа на шаре) не может регулироваться. В результате шар стоит на месте, но бешено вращается... В условиях спортлото это еще куда ни шло, там плотность такая что для наблюдателя это почти хаос, но в бильярде-то такое не пройдет.
Кстати, для собственной тренировки улучшил анимацию движения логотипа по шару, используя шейптвин (т.е. он выгибается :) ). Если интересует, выложу. А в механике не силен, может кто другой подскажет.


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

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