![]() |
|
Модераторы: SoWa |
![]()
|
|
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
Как сделать что б функция возвращала массив данных?
К примеру Я ввожу три аргумента(x,y,z), перевожу их в 2д координаты и надо что б функция вернула 2 числа. |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
напиши
Добавлено через 1 минуту и 28 секунд или ты про возврат значений из функции? тогда:
|
||||
|
|||||
| nns2009 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 1.2.2009 Репутация: нет Всего: 1 |
Как бы мы не крутились функция будет возвращать один объект, поэтому:
1) Можно создать класс(например Point2D) и возвращать объект этого класса. 2) Или использовать динамические свойства объекта Object:
Вариант "или короче" в общем случае(для возврата нескольких значений) будет удобнее. А ты тоже занимаешься разработкой 3d движка? Добавлено через 3 минуты и 36 секунд
Не очень хороший вариант: при использовании функции всегда нужно помнить на каком месте стоит x, а на каком y. |
||||
|
|||||
| jorka |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
to nns2009, супер, спасибо, да) Но пока не особо получается, в нете мало документации для "любителей", пишут в основном про уже готовые 3д обьекты, а как с нуля все сделать не пишут.
Еще такие вопросы: 1) Точку с запятой ставить не обязательно в конце строк? 2) Как удобней вывести данные? К примеру Я напишу
или
В обоих случаях надо 2 раза проганять процедуру, а это несколько накладно( Это сообщение отредактировал(а) jorka - 6.3.2010, 22:34 |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
ну, это ж очевидно - присвоить результат переменной
|
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
to bars80080, спасибо, Я чето подумал что при таком присвоении ссылка передается, а не данные.
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
хм, скорее всего, да, ссылка. то есть ссылка на ячейку памяти, в которой хранится сей объект или массив (их значения, свойства, ключи). но при обращении к ней, ты не уже не производишь повторного вычисления данных
|
|||
|
||||
| nns2009 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 1.2.2009 Репутация: нет Всего: 1 |
Можно не ставить.(Но если пишешь несколько действий в одну строку то между ними нужно поставить).
Я тоже этим занимаюсь, правда функцию для преобразования координат из 3d в 2d я уже реализовал и протестировал: она работает абсолютно правильно(я назвал эту функцию toScreen()). Сейчас я бьюсь над тем, чтобы более ближние треугольники отображались поверх более дальних. Если хочешь, будем вместе думать над разработкой движка.
Передаётся ссылка, но результат тот же самый, как если бы передавались данные. |
||||
|
|||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
С движком проблем нету, правда Я делаю более простенький, не треугольниками, а квадратами, если тормозить не будет, то потом переделаю. У меня больше проблем с самим ас3. Рисую два пересекающихся квадрата и на месте пересечения дырка получается)) С помощью drawTriangles будет конечно лучше рисовать сложные фигуры, но меня пугает сама мысль о процесе разбития обьекта на треугольники) Это сообщение отредактировал(а) jorka - 7.3.2010, 23:44 |
|||
|
||||
| nns2009 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 1.2.2009 Репутация: нет Всего: 1 |
А какая, по сложности разница, рисовать треугольники или квадраты(хотя почему квадраты? Ведь квадрат в 3d пространстве спроецируется совсем не обязательно в квадрат, а например в четырёхугольник).
Лично я у себя в движке работаю над иерархической системой отображения, как в AS 3.0, но в 3d. Будет очень удобно: сложные объекты создаём из простых и манипулируем ими как единым целым. Например, чтобы сдвинуть куб вверх, не обязательно будет сдвигать вверх каждый из 12 треугольников: можно будет сдвинуть контейнер, содержащий данные треугольники. В свою очередь, из кубов можно будет составить, например, пирамиду, и чтобы сдвинуть её, достаточно будет одной строчки кода. |
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
nns2009, у меня движок попроще будет( жаль нескем такие нюансы обговорить, ато чуствую не раз еще переделывать прийдется
|
|||
|
||||
| jorka |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
1)По завершении процедуры переменная "о" уничтожается или остается висеть в памяти?
2) Как лучше записать/оформить переменную и почему(особенно интересует с точки зрения быстродействия)?
|
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: нет Всего: 386 |
1) она остается висеть в памяти, до тех пор, пока указатель на нее сохраняется... Надеюсь, эта фраза со временем приведет кого-нибудь к просветлению
2) var o={x:x,y:y}; эта запись короче. Это единственная причина. выиграть существенно на разной форме записи элементов невозможно ;) -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 1 Всего: 22 |
Кошерней всего создать отдельный класс с полями (с геттерами и сеттерами) и передавать переменную этого класса - это наиболее оптимальное, удобное и функциональное решение.
|
|||
|
||||
| nns2009 |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 1.2.2009 Репутация: нет Всего: 1 |
Об этих вещах заботиться среда выполнения Flash: если на объект не остаётся не одной ссылки, то среда выполнения Flash удалит объект когда ей вздумается.
С точки зрения ООП всегда нужно возврвщать определённый тип данных(например создать класс Point2D): это и быстрее, чем создавать динамические переменные и если ты вдруг в будущем наберёшь имя переменной экземпляра(свойства) неправильно, то компилятор сообщит тебе об этом. Или можно так: return {x:x, y:y} Массивы желательно использовать для хранения данных одинакового типа и назначения. Например поэтому:
|
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | ActionScript 3 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |