Форум 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=95080)

Pon 27.04.2007 09:17

Задать условие
 
У меня есть мозайка, и каждый символ с именем 0-0, 0-1, 0-2 итд,
и когда я задаю условие типа

Код:

if (0-0._alpha > 70)
{
nextFrame();
}

Не хочет работать, выдаёт ошибку, не ужели это из-за того, что элементы называются 0-0 0-1 0-2 ? Можно что-нибуь сделать?

Kikasso 27.04.2007 09:49

Код:

if (this['0-0']._alpha > 70)
{
nextFrame();
}

как раз из-за этого. Назвать с буквой вначале.
И код обводите тегами.

Pon 27.04.2007 10:45

А если не получается с буквой? и зачем this что оно значит?

motor4ik 27.04.2007 11:03

расскажите почему не получается с буквой , мы подумаем ) что мешает вам называть из element0_0 к примеру или el0_0

Pon 27.04.2007 11:25

Код:

onClipEvent(mouseDown) {
        // get mouse location
        mx = _root._xmouse;
        my = _root._ymouse;

        // loop through pieces looking for hit
        for(x=0;x<3;x++) {
                for(y=0;y<4;y++) {
                        piece = _root[x+"-"+y];

                        // see whether the piece is under the cursor
                        // and if it has not yet been placed
                        if (piece.hitTest(mx,my) and (piece._alpha < 100)) {
                                // this is the piece clicked
                                piece.startDrag();

                                // break out of all loops
                                x = 3;
                                y = 4;
                                break;
                        }
                }
        }
}

onClipEvent(mouseUp) {
        // stop piece from moving
        stopDrag();

        // get distance from center of piece
        // to center of outline

        dx = _root.outline._x - piece._x;
        dy = _root.outline._y - piece._y;
        dist = Math.sqrt(dx*dx+dy*dy);

        // if close enough, then set it in place
        if (dist < 10 ) {
                piece._x = _root.outline._x;
                piece._y = _root.outline._y;

                // set to full color
                piece._alpha = 100;
        }
}

Данный код был мной нагло украден :) Я не особо во всем разобрался, т.к. знание Actionscript еще неделю назад было вобще нулевое, но я так понимаю, что фишка в этой строчке
Код:

piece = _root[x+"-"+y];
и если элементы мозайки будут называться не 0-0 0-1 1-0 2-0 итд, мой piece двигаться не будет :)

Aziz Zaynutdinoff 27.04.2007 11:46

мда...
посмотрите сами, вы обращаетесь к элементу в строчке
Код:

piece = _root[x+"-"+y];
а в проверки условия почему-то просто 0-0. Замените на _root[x+"-"+y] и будет вам счастье.

P.S.>>>
this – это ссылка на текущий клип, в котором используется вызов.
Т.е. если написать:
Код:

mc.onRelease = function()
{
    trace(_root.mc); // Outpur _level0.mc
    trace(this); // Output _level0.mc;
}
mc2.onRelease = function()
{
    trace(_root.mc2); // Output _level0.mc2;
    trace(this); // Output _level0.mc2;
}


Pon 27.04.2007 12:06

Aziz Zaynutdinoff 0-0 0-1 0-2 0-3 1-0 1-1 1-2 1-3 2-0 2-1 2-2 2-3 это всё имена кусочков мозайки, и я хочу сделать банальную вещь, сделать поверку если все куски мозайки имеют прозрачность (Alpha) 100, сделать переход на новый кадр, и не могу :(

Aziz Zaynutdinoff 27.04.2007 12:51

товарищ Pon, вы когда-нибудь занимались программированием до этого момента?

Знаете что такое циклы, обращение к переменным?
Для того, чтобы задать ваше условие достаточно организовать цикл от 0 до кол-ва элементов по OX, внутри которого цикл от 0 и кол-во элементов по OY, а дальше обычный перебор в теле условия.

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

motor4ik 27.04.2007 12:54

хорошее слово сарказм, мне нравится :moder:

Код:

function testMazaikaHaHa():Boolean {
for (i=0;i<n;i++){
  for (j=0;j<m;j++){
      if (_root[i+"-"+j]._alpha!=100){
          return false;
      }
  }
}
return true;
}


if (testMazaikaHaHa()) nextFrame();


Pon 27.04.2007 13:01

motor4ik cпасибо огромное :)


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

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