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

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

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

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Напишите класс, назовите его Int и все... Int с null тормозить будет, по сравнению с int разов в 10 (примерно)

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

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Код AS3:
var s:String;
trace(s + "test"); // nulltest
__________________
TankiOnline
Я разработчик Alternativa3D

Старый 30.08.2009, 22:06
CrazyCoder вне форума Посмотреть профиль Отправить личное сообщение для CrazyCoder Найти все сообщения от CrazyCoder
  № 13  
Ответить с цитированием
CrazyCoder

Регистрация: Aug 2008
Сообщений: 15
Если по логике, то String не может быть элементарным типом. Это полюбому указатель.
Int, Number - это родные типы для процессора, а строка - область памяти.

Старый 30.08.2009, 23:00
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 14  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Само собой, одно дело самописный класс - то есть объект, то есть не простой тип, другое дело простой.

Цитата:
Сообщение от CrazyCoder
Если по логике, то String не может быть элементарным типом. Это полюбому указатель.
В целом да. Но следует не забывать, что мы работаем с виртуальной машиной, а как она уже это всё вертит - мне не известно.

Цитата:
Сообщение от CrazyCoder
Как показывает мой опыт, правильно - не делать неявных предположений в функциях типа setPosition. Если уж на то пошлО, то Х координата может быть и у объекта не размещённого на сцене и тогда этот код будет просто опасен. Нужно не передавать параметр для if, а решать - вызвать setPosition(x, y) или setPositionRand(stage.width, stage.height) в вызывающей функции.
Сомнительно. Мне в финальном проекте пользы от setPosition() не будет никакой, мне понадобится setPositionRand и только. Вводится это с целью дебагга онли. Даже если не так, комментарии решают - я всегда знаю, что метод хочет принять, а что вернуть.
Кстати, можно поподробнее, в чем "опасность" двигать объекты вне дисплей листа?

Старый 31.08.2009, 00:42
CrazyCoder вне форума Посмотреть профиль Отправить личное сообщение для CrazyCoder Найти все сообщения от CrazyCoder
  № 15  
Ответить с цитированием
CrazyCoder

Регистрация: Aug 2008
Сообщений: 15
Цитата:
Мне в финальном проекте пользы от setPosition() не будет никакой, мне понадобится setPositionRand и только.
Тем более. Значит имя функции не соответствует её назначению. А чисто для дебага функции лучше отдельными делать и отрезать при условной компиляции.

Цитата:
Даже если не так, комментарии решают
Нет. Это сложно объяснить, но правильный код в комментариях практически не нуждается. Понятно, что, setPosition - это задать позицию, а setPositionRandom - задать позицию случайно. И не какие комментарии тут не нужну.

Цитата:
Кстати, можно поподробнее, в чем "опасность" двигать объекты вне дисплей листа?
Код AS3:
if (xPos==null) x=Math.round(Math.random()*stage.stageWidth));
Когда объект не на сцене его свойство stage = null. И stage.stageWidth приводит к ошибке времени выполнения.

Старый 31.08.2009, 03:08
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 16  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Простые типы передаются по значению, сложные по ссылке. Проверить просто:

Код AS3:
function test(var1:int, var2:Number, var3:String, var4:Point) {
  var1 += 10;
  var2 += 10.0;
  var3 += "10";
  var4.x += 10;
}
 
var var1:int = 10, var2:Number = 10, var3:String = "10", var4:Point = new Point(10);
test(var1, var2, var3, var4);
trace(var1, var2, var3, var4); // 10, 10, 10, [Point X:20 Y:0]
__________________
TankiOnline
Я разработчик Alternativa3D

Старый 31.08.2009, 11:00
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 17  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Когда объект не на сцене его свойство stage = null. И stage.stageWidth приводит к ошибке времени выполнения.
А, ты про это. У меня константами хранятся все значения, а ля Config.STAGE_WIDTH - это написано чтобы вас не путать)

Цитата:
Тем более. Значит имя функции не соответствует её назначению. А чисто для дебага функции лучше отдельными делать и отрезать при условной компиляции.
setPosition - установить позицию. Это может быть случайная позиция, фиксированная или вообще позиция в обществе. Вылетающая подсказка мне о всём вежливо расскажет.

Цитата:
Нет. Это сложно объяснить, но правильный код в комментариях практически не нуждается. Понятно, что, setPosition - это задать позицию, а setPositionRandom - задать позицию случайно. И не какие комментарии тут не нужну.
В целом ты прав. Но либо у меня проблемы с памятью, либо проекты большие - в конце проекта я уже не помню, что творит какой-нибудь метод класса, который я писал ранее. И даже говорящие имена, вроде objWidth слабо помогают. Я знаю, что это ширина объекта, точно могу сказать. Только вот какого объекта, я уже не помню. И не потому, что организация кода плохая, мол непонятного какой объект ширину храним, этот объект на этот класс всего один, а тупо потому, что не помню.

Цитата:
Простые типы передаются по значению, сложные по ссылке. Проверить просто:
Дак на правильность этой фразы никто и не усомневался)

Старый 31.08.2009, 13:41
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 18  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Код AS3:
function test(var1:int, var2:String) {
	for(var i:int = 0; i < 10000000; i++)
	{
		var1 += 10;
		var2 = "10";
	}
}
 
var var1:int = 10;
var var2:String = "10";
 
trace(System.totalMemory / 1024 / 1024);//6.0546875
 
test(var1, var2);
 
trace(System.totalMemory / 1024 / 1024);//6.05859375
UPD.:
Я лоханулся. Все указывает на то, что, в AS3.0 string - это value type.


Последний раз редактировалось Волгоградец; 31.08.2009 в 14:28.
Старый 31.08.2009, 22:07
Герыч вне форума Посмотреть профиль Отправить личное сообщение для Герыч Найти все сообщения от Герыч
  № 19  
Ответить с цитированием
Герыч
 
Аватар для Герыч

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
хм.. личный интерес, что последним тестом проверялось?

Старый 01.09.2009, 07:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 20  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от Герыч Посмотреть сообщение
хм.. личный интерес, что последним тестом проверялось?
Вероятно, является ли ссылкой var2 на строковое значение. Но смысл в итерациях мне остался непонятен. Как, впрочем, и постоянное присвоение «10» var2.

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

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

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


 


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


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