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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.08.2011, 17:44
brodotsky вне форума Посмотреть профиль Отправить личное сообщение для brodotsky Найти все сообщения от brodotsky
  № 1  
Ответить с цитированием
brodotsky

Регистрация: Jul 2011
Сообщений: 18
По умолчанию Круги со случайными координатами центра

Нужно следующее:
в первом кадре появляется круг со случайными координатами центра;
во втором кадре добавляется ещё один такой же круг, тоже со случайными координатами;
в третьем кадре - ещё один и т.д.

Ясное дело, нужен ActionScript, иначе случайных координат не получить.
Программно круги не создаются, можно программно создавать только кривые и заливки (lineStyle, curveTo, beginFill, endFill).
Но в моём случае создавать столько кривых и заливок - верный способ всё повесить.

Может быть, можно программно создавать экземпляры символа?
Если можно, то как?
__________________
Kiss my AS!


Последний раз редактировалось brodotsky; 05.08.2011 в 17:46.
Старый 05.08.2011, 17:56
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 2  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Взято отсюда: http://www.actionscript.org/forums/s...d.php3?t=30328
Код AS3:
MovieClip.prototype.drawCircle = function(center, rad, fillColor, fillAlpha, lineColor, lineAlpha, lineWidth) {
    trace(center[0]+", "+center[1]+", "+rad+", "+fillColor+", "+fillAlpha+", "+lineColor+", "+lineAlpha+", "+lineWidth);
    controlOffset = Math.sin(24*Math.PI/180)*rad;
    if (!fillColor) {
        // if fillColor is not specified black is assigned @ alpha 100%
        fillColor = 0x000000;
        fillAlpha = 100;
    }
    if (lineColor) {
        // if lineColor is specified a line is drawn, if not not
        // if lineWidth is not specified width is set @ 1 pixel
        // if lineAlpha is not specified alpha is set @ 100%
        lineStyle(lineWidth+1*(lineWidth == undefined), lineColor, lineAlpha+100*(lineAlpha == undefined));
    }
    beginFill(fillColor, fillAlpha);
    moveTo(center[0], center[1]-rad);
    curveTo(center[0]+controlOffset, center[1]-rad, center[0]+Math.cos(45*Math.PI/180)*rad, center[1]-Math.sin(45*Math.PI/180)*rad);
    curveTo(center[0]+rad, center[1]-controlOffset, center[0]+rad, center[1]);
    curveTo(center[0]+rad, center[1]+controlOffset, center[0]+Math.cos(45*Math.PI/180)*rad, center[1]+Math.sin(45*Math.PI/180)*rad);
    curveTo(center[0]+controlOffset, center[1]+rad, center[0], center[1]+rad);
    curveTo(center[0]-controlOffset, center[1]+rad, center[0]-Math.cos(45*Math.PI/180)*rad, center[1]+Math.sin(45*Math.PI/180)*rad);
    curveTo(center[0]-rad, center[1]+controlOffset, center[0]-rad, center[1]);
    curveTo(center[0]-rad, center[1]-controlOffset, center[0]-Math.cos(45*Math.PI/180)*rad, center[1]-Math.sin(45*Math.PI/180)*rad);
    curveTo(center[0]-controlOffset, center[1]-rad, center[0], center[1]-rad);
    endFill();
};
_root.drawCircle([150, 150], 100, 0xFF0000, 100, 0x0000FF, 100, 4);
__________________
Кодинг, багинг, алгоритминг. me @

Старый 05.08.2011, 18:47
brodotsky вне форума Посмотреть профиль Отправить личное сообщение для brodotsky Найти все сообщения от brodotsky
  № 3  
Ответить с цитированием
brodotsky

Регистрация: Jul 2011
Сообщений: 18
Спасибо - работает, и быстро работает!
В порядке издевательства я попросил Flash нарисовать 10 тысяч кругов со случайными координатами центра и случайным цветом:
Код AS1/AS2:
for (I=0;I<10000;I++)
  {center=[Stage.width*Math.random (),Stage.height*Math.random ()];
   rad=10;
   fillColor=(255*Math.random ())
             +((255*Math.random ())<<8)
             +((255*Math.random ())<<16);
   fillAlpha=100;
   lineColor=0;
   lineAlpha=0;
   lineWidth=0;
   _root.drawCircle (center,rad,
                     fillColor,fillAlpha,
                     lineColor,lineAlpha,lineWidth);}
Что вы думаете?
Flash MX зависает всего на 1,5 минуты (при этом четырежды предлагает прервать процесс).
И это на моём-то старом Селероне!

Интересно, что бы было, если бы автором Flash была Microsoft?

А всё-таки непонятно, почему ни Macromedia, ни Adobe не сделали во Flash встроенный метод drawCircle?
__________________
Kiss my AS!


Последний раз редактировалось brodotsky; 05.08.2011 в 21:38.
Старый 05.08.2011, 18:53
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 4  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Встроенный метод drawCircle есть в AS 3.0, а во втором много чего нет. Бросьте вы его уже, читайте по АС 3.0.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 05.08.2011, 19:05
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Flash MX
....
А всё-таки непонятно, почему ни Macromedia, ни Adobe не сделали во Flash встроенный метод drawCircle?
Батюшки, этой IDE уже как 9 лет

Старый 05.08.2011, 21:35
brodotsky вне форума Посмотреть профиль Отправить личное сообщение для brodotsky Найти все сообщения от brodotsky
  № 6  
Ответить с цитированием
brodotsky

Регистрация: Jul 2011
Сообщений: 18
В AS3 есть drawCircle?
Значит, только Macromedia не додумалась.
А Adobe, съев Macromedia, сразу додумалась.

Похоже, в случае с Flash новее означает лучше
(это применимо далеко не ко всем программам).
Уговорили, перейду на AS3, только чуть-чуть позже.

Вообще, похоже, основное назначение раздела AS 1.0/2.0 - агитировать за AS 3.0.
__________________
Kiss my AS!


Последний раз редактировалось brodotsky; 05.08.2011 в 21:39.
Старый 05.08.2011, 21:54
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 7  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
AS 2.0 прекратил свое развитие сразу после выпуска AS3 в свет. А было это в 2005-2007, точно не помню.

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

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

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


 


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


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