Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вызов конструктора со списком аргументов (http://www.flasher.ru/forum/showthread.php?t=194299)

Asfel 11.02.2013 17:32

Вызов конструктора со списком аргументов
 
Возможно ли вызвать конструктор схожим методом с функцией т.е
Код AS3:

f.apply(null, arguments:Array)

Чтобы передать список аргументов классу

Hauts 11.02.2013 17:54

http://stackoverflow.com/questions/3...-of-parameters

Asfel 11.02.2013 19:25

Ну что так это можно сделать это и так ясно а интересно можно ли это сделать средствами АС3 т.е что то вроде apply, call

caseyryan 11.02.2013 20:12

Цитата:

Ну что так это можно сделать это и так ясно а интересно можно ли это сделать средствами АС3 т.е что то вроде apply, call
Нельзя. Зачем это нужно вообще? Какой в этом смысл?
Другие функции у объектов можно переопределять через прототип. Но на практике я ни разу не сталвивался со случаем, когда это было необходимо. Объект ведь должен знать как ему обрабатывать пришедшие в конструктор аргументы, логично? Поэтому что мешает написать конструктор, в котором будет известно что туда передается и как с этим работать

Asfel 11.02.2013 20:39

Ну конкретный пример, хотя ситуация когда это нужно на самом деле довольно распространена.... :/

Есть кубическая текстура которая принимает 6 параметров каждый из которых сторона куба.
В системе приложения текстура хранится как
Код:

/Images/CubeTexture/posX.jpg, /Images/CubeTexture/posY.jpg... и тд.
Делаем конструктор кубической текстуры в который передается путь к папке с текстурами куба тоесть:
Код:

"/Images/CubeTexture/"
. И конструктор зная что всегда будет 6 сторон с названиями
Код:

posX, posY, posZ, negX, negY, negZ
просто возьмет их и сделает список из соотвествующих битмапов.

Далее они должны быть переданы в конструктор куб текстуры и тут уже не особо хочется делать это так:
new
Код AS3:

CubeTexture(bitmaps[0], bitmaps[1]....

Конечно может если в одном месте тут и можно написать это руками но подобные ситуации достаточно часто могут возникать и возникают.

stasuss 11.02.2013 20:50

а прямо массивом почему нельзя передать?? и перебрать массив в конструкторе

Asfel 11.02.2013 20:56

Потому что нельзя менять чужую библиотеку или нативные методы

caseyryan 11.02.2013 20:59

Идея понятна. А apply чем помог бы? Ведь тоже самое пришлось бы делать

Asfel 11.02.2013 21:05

Почему?
Код:

f.apply(null, bitmaps)
. На самом деле вряд ли будет такая ситуация, где это будет реально решать какую то проблему, кроме как лень вызова конструктора с n параметрами :)... Тогда как аргументы уже скомпонованы в массив


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

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