| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > ActionScript 3 > Функция, возвращение значений |
| Автор: jorka 6.3.2010, 14:32 |
| Как сделать что б функция возвращала массив данных? К примеру Я ввожу три аргумента(x,y,z), перевожу их в 2д координаты и надо что б функция вернула 2 числа. |
| Автор: bars80080 6.3.2010, 19:19 | ||||
напиши
Добавлено через 1 минуту и 28 секунд или ты про возврат значений из функции? тогда:
|
| Автор: jorka 6.3.2010, 22:29 | ||||
| to nns2009, супер, спасибо, да) Но пока не особо получается, в нете мало документации для "любителей", пишут в основном про уже готовые 3д обьекты, а как с нуля все сделать не пишут. Еще такие вопросы: 1) Точку с запятой ставить не обязательно в конце строк? 2) Как удобней вывести данные? К примеру Я напишу
или
В обоих случаях надо 2 раза проганять процедуру, а это несколько накладно( |
| Автор: bars80080 6.3.2010, 23:06 | ||
ну, это ж очевидно - присвоить результат переменной
|
| Автор: jorka 6.3.2010, 23:11 |
| to bars80080, спасибо, Я чето подумал что при таком присвоении ссылка передается, а не данные. |
| Автор: bars80080 6.3.2010, 23:19 |
| хм, скорее всего, да, ссылка. то есть ссылка на ячейку памяти, в которой хранится сей объект или массив (их значения, свойства, ключи). но при обращении к ней, ты не уже не производишь повторного вычисления данных |
| Автор: nns2009 7.3.2010, 15:45 | ||||
Можно не ставить.(Но если пишешь несколько действий в одну строку то между ними нужно поставить).
Я тоже этим занимаюсь, правда функцию для преобразования координат из 3d в 2d я уже реализовал и протестировал: она работает абсолютно правильно(я назвал эту функцию toScreen()). Сейчас я бьюсь над тем, чтобы более ближние треугольники отображались поверх более дальних. Если хочешь, будем вместе думать над разработкой движка.
Передаётся ссылка, но результат тот же самый, как если бы передавались данные. |
| Автор: jorka 7.3.2010, 23:22 | ||
С движком проблем нету, правда Я делаю более простенький, не треугольниками, а квадратами, если тормозить не будет, то потом переделаю. У меня больше проблем с самим ас3. Рисую два пересекающихся квадрата и на месте пересечения дырка получается)) С помощью drawTriangles будет конечно лучше рисовать сложные фигуры, но меня пугает сама мысль о процесе разбития обьекта на треугольники) |
| Автор: nns2009 8.3.2010, 21:54 | ||||
А какая, по сложности разница, рисовать треугольники или квадраты(хотя почему квадраты? Ведь квадрат в 3d пространстве спроецируется совсем не обязательно в квадрат, а например в четырёхугольник).
Лично я у себя в движке работаю над иерархической системой отображения, как в AS 3.0, но в 3d. Будет очень удобно: сложные объекты создаём из простых и манипулируем ими как единым целым. Например, чтобы сдвинуть куб вверх, не обязательно будет сдвигать вверх каждый из 12 треугольников: можно будет сдвинуть контейнер, содержащий данные треугольники. В свою очередь, из кубов можно будет составить, например, пирамиду, и чтобы сдвинуть её, достаточно будет одной строчки кода. |
| Автор: jorka 8.3.2010, 22:26 |
| nns2009, у меня движок попроще будет( жаль нескем такие нюансы обговорить, ато чуствую не раз еще переделывать прийдется |
| Автор: jorka 9.3.2010, 20:19 | ||||
1)По завершении процедуры переменная "о" уничтожается или остается висеть в памяти?
2) Как лучше записать/оформить переменную и почему(особенно интересует с точки зрения быстродействия)?
|
| Автор: ksnk 9.3.2010, 20:54 |
| 1) она остается висеть в памяти, до тех пор, пока указатель на нее сохраняется... Надеюсь, эта фраза со временем приведет кого-нибудь к просветлению 2) var o={x:x,y:y}; эта запись короче. Это единственная причина. выиграть существенно на разной форме записи элементов невозможно ;) |
| Автор: IDVsbruck 10.3.2010, 03:39 |
| Кошерней всего создать отдельный класс с полями (с геттерами и сеттерами) и передавать переменную этого класса - это наиболее оптимальное, удобное и функциональное решение. |
| Автор: nns2009 14.3.2010, 17:45 | ||||||
Об этих вещах заботиться среда выполнения Flash: если на объект не остаётся не одной ссылки, то среда выполнения Flash удалит объект когда ей вздумается.
С точки зрения ООП всегда нужно возврвщать определённый тип данных(например создать класс Point2D): это и быстрее, чем создавать динамические переменные и если ты вдруг в будущем наберёшь имя переменной экземпляра(свойства) неправильно, то компилятор сообщит тебе об этом. Или можно так: return {x:x, y:y} Массивы желательно использовать для хранения данных одинакового типа и назначения. Например поэтому:
|