Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   непонятица со строкой. (http://www.flasher.ru/forum/showthread.php?t=90072)

romulko 31.12.2006 00:08

непонятица со строкой.
 
Вложений: 1
День добрый, форумяне.
Сначала о главном – с новым всех годом! Желаю крепкого здоровья, быстродействие мозга как у четырех ядерного Intel Core Extreme, и всегда много щедрых заказчиков!!!;)

Пожелал бы больше, но, сейчас у меня очень глубокий деприсняк из-за одной проблемы с кодом. :boredom: У меня есть восем мувиков и восем кнопок, овтечающим восми мувикам. Когда кликается на первую кнопку, в переменную link заносится идентификатор копки (если копка 1, то заносится 1, если 2, то 2). У нас в переменной link занеслось 1. Когда нажимается на копке два, вызывается функция playmc();, после чего заносится в переменную link число два, так как была нажата вторая кнопка. Функция проигрует мувик один с середины (то есть, он прячется), и вместо него выезжает мувик два (код на копке deg.mc1.gotoAndPlay("sp1");). Вот код –

Код:

link = null;
function playmc() {
        deg["mc"+link].gotoAndPlay("s2");
}

На кнопках код –

Код:

on (press) {
        if (link<>1) {
                playmc();
                deg.mc1.gotoAndPlay("sp1");
                link = 1;
        }
}


Код работает, переменные заносятся (отслеживал через trace), но вот при нажатии на вторую кнопку, первый мувик не воспроизводится.
Интересует, правильно ли я написал строку

Код:

deg["mc"+link].gotoAndPlay("s2");
так как думаю, именно она не работает. При составлении переменных в строку, она должна иметь вид (если в переменной link стоит 1)

Код:

deg.mc1.gotoAndPlay("s2");
Пожалуйста, помогите мне разобраться с этим, так как именно на этой проблеме зациклился уже два дня!!! :wacko:
Перерыл весь свой бук по АС, ничего не нашел.
Еще раз всех с праздником!

silin 31.12.2006 00:39

romulko, с наступающим тебя, всех благ..!!
не мог бы ты сгенерить пример проблемы попроще..
а то помочь хочется, а понять не хватает ресурсов..

CCCPirate 31.12.2006 00:45

Ага, я тож прочитал - сломал мозг

romulko 31.12.2006 02:16

Вложений: 1
СССПират и Силин, спасибо что откликнулись.
Думаю, надо было вначале объяснить, что нужно сделать, чем чтобы вы поняли, как я хотел это сделал (у меня мозг еще хорошо не работает с АS, тому, то, как я програмлю понять очень сложно - все настолько запутано, что ой ой ой :rolleyes: .

Вот, сейчас на меня упало прозрение, и я сделал все, что надо, но опять же, “по-своему”.


Но, все же на будущее хотелось бы узнать, почему мой код не работал. Для этого, пожалуйста, объясните, какой вид будет иметь код, после того, как флеш в него вставит переменную (то есть, скомпилирует для активации).
Вот код –
Код:

link = null;
deg["mc"+link].gotoAndPlay("s2");


Заносим в переменную link, допустим, число 5. И вот, здесь собака зарыта (то есть, это истинна моего непонимания) – какой вид будет в этой строки –

Код:

deg.mc5.gotoAndPlay("s2");
else

Код:

degmc5.gotoAndPlay("s2");
else ченить другое?
Готовый рабочий swf в аттаче.

silin 31.12.2006 11:07

да просто все, на самом деле:
Код:

link = null;
trace("mc"+link);//mcnull
deg["mc"+link].gotoAndPlay("s2");//≡deg.mcnull.gotoAndPlay("s2");
link = 5;
trace("mc"+link);//mc5
deg["mc"+link].gotoAndPlay("s2");//≡deg.mc5.gotoAndPlay("s2");


romulko 31.12.2006 12:53

Silin, спасибки!

romulko 31.12.2006 15:24

НеТ, все таки интересно, почему же не работает фукция?
Вот, рабочий код -

Код:

link = null;
function playmc() {
        if (link == 1) {
                deg.mc1.gotoAndPlay("sp2");
        } else if (link == 2) {
                deg.mc2.gotoAndPlay("sp2");
        } else if (link == 3) {
                deg.mc3.gotoAndPlay("sp2");
        } else if (link == 4) {
                deg.mc4.gotoAndPlay("sp2");
        } else if (link == 5) {
                deg.mc5.gotoAndPlay("sp2");
        } else if (link == 6) {
                deg.mc6.gotoAndPlay("sp2");
        } else if (link == 7) {
                deg.mc7.gotoAndPlay("sp2");
        } else if (link == 8) {
                deg.mc8.gotoAndPlay("sp2");
        }
}

Я хотел сделать так

Код:

link = null;
function playmc() {
          deg["mc"+link].gotoAndPlay("s2");
}

Почему эе этот код не работает?

silin 31.12.2006 15:41

предположение: не работает, потому нет в них метки "s2", а есть "sp2" ..
посерьезнее надо, заметь как встретишь НГ, так и проведешь: а оно тебе надо весь год из-за описок страдать..:)

pkfun 31.12.2006 15:47

Цитата:

Сообщение от romulko
Код:

link = null;
function playmc() {
        if (link == 1) {
                deg.mc1.gotoAndPlay("sp2");
        } else if (link == 2) {
                deg.mc2.gotoAndPlay("sp2");
        } else if (link == 3) {
                deg.mc3.gotoAndPlay("sp2");
        } else if (link == 4) {
                deg.mc4.gotoAndPlay("sp2");
        } else if (link == 5) {
                deg.mc5.gotoAndPlay("sp2");
        } else if (link == 6) {
                deg.mc6.gotoAndPlay("sp2");
        } else if (link == 7) {
                deg.mc7.gotoAndPlay("sp2");
        } else if (link == 8) {
                deg.mc8.gotoAndPlay("sp2");
        }
}


Для таких конструкций используйте оператор switch.

romulko 31.12.2006 15:53

Ой, РАБОТАЕТ!!!! :eek:
:yahoo:



pkfun и silin, СПАСИБО!!! С этого момента буду два раза проверять код на валидность меток, пременны и всего прочего!!!!

Еше раз с НГ!!!! :bye:


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

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