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

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

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

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
По умолчанию var i:Number = randRange( 0, 4); получаю не число (((

работает:
Код:
_root.mc_picture[40]._x = 0;
_root.mc_picture[40]._y = 0;
_root.mc_picture[40]._visible = true;
не работает:
Код:
var i:Number = randRange( 0, 52);
_root.mc_picture[i]._x = 0;
_root.mc_picture[i]._y = 0;
_root.mc_picture[i]._visible = true;
Код:
function randRange(min:Number, max:Number):Number 
{
  var randomNum:Number = Math.round(Math.random()*(max-min))+min;
  return randomNum;
}
где собака порылась?
ЗЫ и вообще в флешах работает приведение типов? чтобы я, например:
int y = (int) i / 13;
а то в такой записи у меня float получается:
var y:Number = i / 13;
__________________
fast restart: *((int*)0) = 0;

Старый 13.05.2007, 12:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
До AS3 есть только Number.
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 13.05.2007 в 12:54.
Старый 13.05.2007, 12:58
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Это сообщение оставил Kikasso, но в результате каких то глюков, его сообщения при объединении, попали совсем в другую тему к другому автору.

неравномерно.
Код:
var arr = [];
var i = 100000;


function randRange(min:Number, max:Number):Number 
{
  var randomNum:Number = Math.round( Math.random()*(max-min) +min );
  return( randomNum );
}
while (i--){
	var n = randRange( 49, 52 );
	if(!arr[n])arr[n] = 0;
	arr[ n ]++;
}
trace ( 49 + ">" +  arr[49]);
trace ( 50 + ">" +  arr[50]);
trace ( 51 + ">" +  arr[51]);
trace ( 52 + ">" +  arr[52]);
Первый и последний выпадают вдвое реже остальных.

вот теперь шоколадно:
Код:
var arr = [];
var i = 100000;
function randRange(min:Number, max:Number):Number 
{
  var randomNum:Number = Math.floor( Math.random()*( max + 1 - min ) + min );
  return( randomNum );
}
while (i--){
	var n = randRange( 49, 52 );
	if(!arr[n])arr[n] = 0;
	arr[ n ]++;
}
trace ( 49 + ">" +  arr[49]);  //49>25196
trace ( 50 + ">" +  arr[50]);  //50>24749
trace ( 51 + ">" +  arr[51]);  //51>24856
trace ( 52 + ">" +  arr[52]);  //52>25199
или Math.ceil, тогда min не будет включен, надо будет добавлять.
Если maх или min не целые числа - округли результат.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 13.05.2007, 13:35
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 4  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
2all: Теперь знаю почему, и такого не повторю.
Часто мы не знаем, что больше, нам надо только получить число из диапазона.
Код:
function randRange(a:Number, b:Number):Number {
 var min:Number = Math.min( a, b);
 var max:Number = Math.max( a, b);
 return Math.floor( Math.random()*( max + 1 - min )) + min;
}}
Если нужны целые числа, надо округлять.
Код:
function randRange(a:Number, b:Number):Number {
 var min:Number = Math.ceil( Math.min( a, b));
 var max:Number = Math.floor(Math.max( a, b));
 if( max < min ) return null;
 return Math.floor( Math.random()*( max + 1 - min )) + min;
}
trace( randRange( 49, 52 )); //ok
trace( randRange( 52, 49 )); //ok
trace( randRange( 49.1, 49.2 )); //null
trace( randRange( 49.1, 50.2 )); //только 50

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

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

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


 


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


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