2015-08-19 3 views
1

У меня есть мувиклип с именем mcButton с свойством scaleX, я должен передать его функции, которая управляет mcButton.scaleX.Как передать свойство в качестве аргумента функции в actionscript

manipulateValue(mcButton.scaleX); 

function manipulateValue(mcProperty:?) 
{ 
    mcProperty += 2; 

    ..execute other things here... 
} 

Функция выполняет один и тот же код для несколько собственности и несколько мувика, так что я должен сделать это родовым. Любая помощь в том, как я могу это сделать?

ответ

2

Если вы хотите манипулировать несколькими свойствами .. Как насчет передачи объекта mcButton?

manipulateValue(mcButton); 

function manipulateValue(obj:MovieClip) 
{ 
    obj.scaleX += 2; 

    // manipulate other properties 
    obj.scaleY += 2; 
    obj.width = ....; 
    obj.height = ....; 

    ..execute other things here... 
} 

Обновлено: 19 августа 13:55 (JST)

OK. Если вы хотите передать одно свойство сразу, как насчет этого?

manipulateValue(mcButton, "scaleX"); 
manipulateValue(mcButton, "scaleY"); 

function manipulateValue(obj:MovieClip, prop: String) 
{ 
    if (obj.hasOwnProperty(prop)){ 
     obj[prop] += 2; 
    } 

    ..execute other things here... 
} 
+0

проблема заключается в том, что для определенного свойства, такого как scaleX, оно будет использоваться для нескольких случаев «if ..» «else if» и т. Д. Поэтому, если нам нужно манипулировать свойствами номера M, вам нужно обработать строку кодов NxM раз, в то время как на самом деле мы могли делать это только с помощью N строк кодов. –

+0

Итак, что не так с этим решением? Пока все ваши объекты MovieClips кажутся идеальными. – BadFeelingAboutThis

+0

yhea, но 'objects' являются' свойствами' 'MovieClips'. Я ищу способ запустить его таким образом: 'manipulateValue (mc.stageX)', 'manipulateValue (mc.scaleY)', 'манипулировать (mc.alpha)' или так далее, это зависит от того, какое свойство мы хотим манипулировать. Решение моего запроса может сделать «функцию» гибкой во время выполнения. –

1

Похоже, вы достаточно близко к тому, что вам нужно. Я считаю, что то, что вы пытаетесь использовать, называется подстановочным знаком (например: function manipulateValue(val:*)).

Хотя я уверен, что прочитал, что использование подстановочных знаков - это не лучшее, что можно сделать - я не совсем уверен в деталях, почему, но я уверен, что это считается «плохой практикой» - поэтому попробуйте использовать:

function manipulateValue(val:Number) 
{ 
    // lines of code such as: 
    // val += 20; 
} 

Обратите внимание, что scaleX, scaleY и alpha являются все Number значения - так, используя это будет работать.

Если вы намерены также манипулировать значениями, которые не являются :Number, вам лучше использовать пример подстановочного знака выше.

+0

он не работает: '( –

Смежные вопросы