2016-11-07 2 views
0

Это мой первый раз здесь, и я прочитал правила публикации. Тем не менее, простите меня, если я ошибаюсь.Как сделать две или несколько функций одним нажатием кнопки?

Это мой первый раз, когда мы делали AS3 и Animate CC. Я решил сделать проект - тот, где вы нажимаете на броню, и броня появляется на аватаре. Очень похоже на игру «наряда», но я вообще не хочу тащиться. В принципе, я хочу, чтобы люди нажимали на изображение брони, а затем отображали его на аватаре, носящем его. Тем не менее, есть несколько вариантов брони, таких как Shirt 1, Shirt 2 или Skin 1, Skin 2 и т. Д. Моя основная проблема прямо сейчас заключается в том, что я не могу понять, как элемент исчезнет после нажатия на другой элемент, особенно в той же категории, что и шкуры. В течение двух дней я много гуляю, и нет никакого решения. Я нашел такие коды, как сброс, отключение изображения и другие вещи, которые я даже не могу вспомнить.

Я очень уверен, что делаю это совершенно неправильно. Вот код для кадра 4, где основная проблема. Имейте в виду, что я использовал разные коды в разных разделах основного кода для кадра 4, и теперь код полностью перепутался.

EDIT: Обновлено кодирование в соответствии с запросом.

import flash.events.MouseEvent; 

    stop(); 

function addItem(item:MovieClip,xPos:Number,yPos:Number){ 
    trace(item); 
    trace(avatar_mc); 
    avatar_mc.addChild(item); 
    item.x = xPos; 
    item.y = yPos; 
} 

basic_skin_1_button.addEventListener(MouseEvent.CLICK, itemSelect1); 

function itemSelect1(e:MouseEvent):void { 
    addItem(basicskin1_mc,25,40); { 
    } 
} 

basic_skin_2_button.addEventListener(MouseEvent.CLICK, itemSelect2); 

function itemSelect2(e:MouseEvent):void { 
    addItem(basicskin2_mc,25,40) 
} 
+0

Единственное, что я скажу, это да, у вас неправильное представление о функциях. Несколько хороших вещей здесь, но главное, что выделяется для меня, это то, что у вас есть функция для reset1 и hideskin2 и hideskin3. Это, как вы, вероятно, собрали, очень неэффективное кодирование, потому что, что происходит, когда вы хотите добавить четвертый или пятый скин? Вам нужно будет добавить весь этот дополнительный код. Тогда что произойдет, если у вас 12 скинов, и вы хотите что-то изменить в функции hideskin? Вам придется менять его 12 раз! У вас должна быть одна функция, которая принимает переменную, которая говорит, что кожа скрывается. –

+0

Хорошо, спасибо, что рассказали мне об этом. Я ищу, чтобы скрыть все скины, кроме одного. Например, я нажимаю на бледный скин, и он появляется на аватаре, но мне это не нравится, поэтому я нажимаю на коричневый оттенок. Что происходит в этот момент, так это то, что бледная кожа не исчезает, если только не щелкнуть по кнопке бледной кожи, а не другим кнопкам. Надеюсь, я объясню это хотя бы немного ясно ... – Snowdeath

+0

@Snowdeath Это не ответ, но я предлагаю избегать if (something.visible) {something.visible = false;} else {something.visible = true; } Вы можете сделать это, просто используя этот код: ** something.visible =! Something.visible; **. Этот метод короче, чтобы изменить значение булева. Для ответа я согласен с NealDavis – tatactic

ответ

1

Это не полный ответ, но вы должны изучить это и обновить свой код, прежде чем идти дальше.

Все, что я адресую здесь, как сделать одну функцию для нескольких сценариев или входов. Это действительно одна из основных целей использования пользовательских функций, и это позволит значительно упростить решение вашей проблемы.

function addItem(item:MovieClip,xPos:Number,yPos:Number){ 
    characterImage.addChild(item); 
    item.x = xPos; 
    item.y = yPos; 
} 

Тогда вы можете вызвать эту функцию, как этот

addItem(basicskin3_mc,0,0); 

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

addItem(basicskin2_mc,0,0); 

, но я просто передал ему другой аргумент (basicskin2_mc).

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

+0

Хорошо, я обошел свой код и решил попытаться начать все заново. У меня только один вопрос ... Что вы вкладываете в 'characterImage'? – Snowdeath

+0

characterImage - ваш персонаж, которого вы наряжаете. Наверное, просто бумажная кукла или манекен или копия вашего персонажа. Это может быть MovieClip или Sprite. Это то, к чему вы добавляете броню и кожу. Имеют смысл? –

+0

Я до сих пор не понимаю, как поместить 'addItem (basicskin2_mc, 0,0);' в этот код; 'basic_skin_2_button.addEventListener (MouseEvent.CLICK ???);'? – Snowdeath

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