Форум Flasher.ru

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

Horror 11.01.2003 16:03

Вопрос на который пока никто не смог ответить
 
Короче есть две ситуации.

Ситуация 1
В руте лежит гора кнопок. У каждой - уникальное имя. По нажатию на любую нужно определить имя кнопки на которую нажимаем.
Задача: КАК?

Ситуация 2
В руте лежит гора мувиков. У каждого уникальное имя. В каждом мувике - кнопка, также именованая. По нажатию на любую из кнопок через параметр _name получаем имя мувика в котором лежит кнопка.
Задача: отключить параметром .enabled=false; кнопку на которую нажали.
НЕработающий пример(который теоретически ДОЛЖЕН работать):
Код:

on (press) {
  var name = _name;
  // имя мувика в котором
  // лежит нажатая кнопка

  var link = "_root." + name + ".i2";
  // i2 - имя самой кнопки на которую
  // нажали + путь от корня

  link.enabled = false;
// еще вот так можно попробовать :)

  [link].enabled = false;

}

Пока никто не смог ответить как проделать эти операции...
Будет весело если это нельзя сделать в принципе :))

iLoveYou 11.01.2003 16:23

Вложений: 1
Сдается мне, голубчик, гоните Вы все. Спрашивали плохо...

Horror 11.01.2003 16:36

Все замечательно
 
Вложений: 1
только суть в том что кнопки и мувики генерятся функцией.
И мы не знаем как называтся кнопка на которую нажимаем.
Вот к чему я клоню.

В коде, который ты дал - явно приписано название кнопки. Тогда и смысла нет никакого узнавать как ее зовут.

Вот пример, относящийся ко второму вопросу который я задал.
Неудачный пример к слову говоря :(

iLoveYou 11.01.2003 16:49

Твоей идеи я не понял. Распиши словами то, что хочешь сделать - что это будет практически.

А на оба твоих вопроса я ответил. Получить имя сгенеренного мувика не сложнее, чем получить имя имеющегося. Отключить кнопку, зная ее имя, тоже возможно.

ЗЫ
Код:

        b1="_level0.test."+_root.i1;
Вот это что такое?

Horror 11.01.2003 17:07

Так.
В краце объясняю что у меня происходит.

Это игра "Пары"
Функция генерирует массив с кнопками. Затем создает дубль на каждую из них. Это все снова запихивается в массив. Затем случайным образом из него вытаскиваются 9 кнопок и дублей к ним.
Все это раскидывается по экрану.

При нажатии на кнопки мы должны получать их имена.
1. Для того чтобы знать совпали пары или нет.
2. Чтобы задать совпавшим парам параметр .enabled=false;
3. Чтобы задать НЕсовпавшим парам параметр _alpha=0;

Вот вроде и все. Затык у меня произошел как раз на получении имен этих кнопок.

Пробовал идти двумя методами:
1. Засунув кнопки в мувики производить операции уже с мувиками. В этом случае имя мувика я получаю превосходно. Но вот параметр enabled=false; не работает с переменными в путях. Т.к. мне нужно идти от корня, чтобы отключить сразу две кнопки, то приходится засовывать путь к кнопкам в переменную. Вид получается к примеру такой: [link].enabled=false; Но такая строка не работает. Почему - не понятно. Примечательно, что если трейсом вывести значение переменной link и поставить так: _root.myMovie.buttonName.enabled=false; - то все работает.

2. Раскидывал кнопки прямо в руте. Но тогда получение имен кнопок вообще не представляется возможным...

Вот такие вот пироги... :(

iLoveYou 11.01.2003 17:12

А зачем использовать именно кнопки?

Horror 11.01.2003 17:21

Мне показалось так проще при проектировании...
Оказалось что нет.

А какие еще варианты могут быть?
Суть то по идее одинакова...

sergwizard 11.01.2003 18:37

Вложений: 1
Можно пойти таким путем.

Horror 11.01.2003 18:53

СУПЕР!!! пасиба... :))

Я правда добавил еще пару строк, чтобы проверить работоспособность... РАБОТАЕТ! :) Вот они:

Код:

        name=eval ("_root.qqq"+n);
        name.enabled = false;

Единственное - кнопка сразу не отключается...
Убираем курсор с кнопки, потом наводим обратно - только тогда выключается. При первом щелчке она остается работоспособной.

sergwizard 11.01.2003 19:13

Если хочешь, чтобы сразу после щелчка, - вместо on(release) напиши on(press).

Horror 11.01.2003 19:23

Я в замешательстве... :rolleyes:
кнопка у нас аттачится из библиотеки...
не вижу в упор кода
Код:

on (...) {...}

iLoveYou 11.01.2003 19:30

Кнопка - внутри мувика Symbol2///

ЗЫ если не срочная работа, скину сюда свой вариант, как доделаю. не срочная?

Horror 11.01.2003 21:30

Нет. Не срочная. Думаю что сам разберусь, но буду благодарен...

iLoveYou 11.01.2003 23:26

тебе осталось только поддизайнить
 
Я знаю, что можно было сделать лучше ;)
Код:

//+++++++++++++++++++++++++++++++++++
//code by s" iLoveYou"
//*********************************************
var i, k;
//=============
MovieClip.prototype.onRollOver = function() {
        this.useHandCursor = false;
        //trace(this._name);
};
//=============
a = new Array(10, 1, 2, 3, 4, 5, 6, 7, 8, 9);
function unsort() {
        return random(2);
}
a.sort(unsort);
//=============
removeboth = function (k) {
        for (i=0; i<10; i++) {
                if (itemList[i].number == k) {
                        itemList[i].removeMovieClip();
                }
        }
};
//=============
itemList = new Array();
for (i=0; i<10; i++) {
        var myItem = new Object();
        myItem.prototype = new MovieClip();
        myItem = _root.createEmptyMovieClip("Item"+i, i);
        with (_root["Item"+i]) {
                beginFill(0xff00fe);
                lineStyle(1, 0xff00fe);
                lineto(0, 20);
                lineto(20, 20);
                lineto(20, 0);
                lineto(0, 0);
                endFill();
                _x = 40*a[i];
                _y = 40;
        }
        if (i>4) {
                myItem.number = i-5;
        } else {
                myItem.number = i;
        }
        itemList[i] = myItem;
}
//================
for (i=0; i<10; i++) {
        Mouse.addListener(itemList[i]);
        itemList[i].onPress = function() {
                this.enabled = false;
                                        if (this.number == k) {
                        removeboth(k);
                        mytext.text="Ура!!!";
                } else {
                        this._alpha = 30;
                        mytext.text="не попал, так тебе и надо...";
                }
                k = this.number;
                trace(k);
        };
}
//================
_root.createTextField("mytext",213, 100, 100, 300, 100);


Pietrovich 12.01.2003 03:51

мда...
какие сложности...

Цитата:

[link].enabled = false;
это ты к кому пытался обратиться? к богу? ;)
уж лучше к руту :)
_root[link].enabled = false; link="имя мувика, отсчитанное от рута"

а это почти готовые "пары" :)

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

Код:

drawButton = function (name,x,y,rgb)
{
        _root.count++;
        _root.createEmptyMovieClip(name,_root.count);

        var t = _root[name];
        t.colorise = function (rgb)
        {
                trace(rgb)
                this.beginFill(rgb, 100);
                this.moveTo(0,0);
                this.lineTo(20,0);
                this.lineTo(20,20);
                this.lineTo(0,20);
                this.lineTo(0,0);
                this.endFill()
                clearInterval(this.i);
        }
        t._x=x;
        t._y=y;
        t._color = rgb;

        t.onRelease = function ()
        {
                if (_root[_root.dis]._color == this._color)
                {
                        _root[_root.dis].removeMovieClip();
                        this.removeMovieClip();
                }
                _root[_root.dis].enabled=true;
                _root.dis = this._name;
                this.colorise(this._color);
                this.i = setInterval(t,"colorise",1000,"0x000000");

                this.enabled=false;

                trace(this._name)
        }
        t.i=setInterval(t,"colorise",1000,"0x000000");
}

drawButton("_b1",0,0,"0x990000");
drawButton("_b2",30,0,"0x009900");
drawButton("_b3",60,0,"0x000099");
drawButton("_b4",0,30,"0x990000");
drawButton("_b5",30,30,"0x009900");
drawButton("_b6",60,30,"0x000099");


iLoveYou 12.01.2003 12:10

Ну а теперь, если у человека хватит ума разобраться в наших эпистолярных изысках, то он получит готовый продукт. Хоррор, с тебя сто тысяч мильёнов баксов :D

ЗЫ 2Pietrovich я писал это 20 минут, да и то между делом и с удовольствием... ;)

KomSerg 12.01.2003 13:57

Я вот тоже как тос дела игру ПАРЫ
http://www.artek.yo.lv/brain.htm
но назвал правда по другому.
может там и много минусов - но самый большой то что долго генерируется расположение канртинко ( естественно что оно генерируется случайным образом.

а может можно каким то образом сделать так - допустим там
x1=Math.Random(10);
x2=.........;
как нужно написать чтобы перемнная x2 генерировалась таким же образом как и x1 но чтоб тоже Random но чтоб исключалось то значение которое присвоилоось переменной x1 !

iLoveYou 12.01.2003 14:04

Сергей, ты мой сорс смотрел?
Код:

a = new Array(10, 1, 2, 3, 4, 5, 6, 7, 8, 9);
function unsort() {
        return random(2);
}
a.sort(unsort);

а потом в цикле
Код:

_x = 40*a[i];
:)

Horror 13.01.2003 12:50

Пасибки.
На самом деле кнопки у меня НЕ генерируются. Они готовыми лежат в библиотеке. Т.к. везде битмаповый рисунок.
Лишь когда дубли создаются - тока тогда.

А функцию перемешивания я использовал такую:

Код:

function MixArray(array, _array) {
//Обнуляем выходной массив. 0 - признак того что ячейка свободна
        for (i = 0; i < array.length; i ++)
        _array[i] = 0;

//Смотрим каждый элемент исходного массива
        for (i = 0; i < array.length; i ++)
        {
//Находим куда ставить элемент в выходной массив
            new_pos = random(array.length);
           
// Если ячейка в выходном массиве занята или вставляем
// элемент на ту же позицию - меняем позицию
            while(new_pos == i || _array[new_pos]!=0)
            {
                new_pos++;
                if (new_pos>=array.length)
                  new_pos = 0;
            }
            //Вставка элемента на место
            _array[new_pos] = array[i];
        }
  }

Используется она два раза.

1. Берет из библиотеки случайные картинки.
2. Когда созданы для них дубли, снова все это перемешивается...

iLoveYou 13.01.2003 15:39

Ты можешь смело претендовать на звание лучшего флеш-кодера года...

Horror 13.01.2003 15:45

Да куда там...
расти и расти еще... :rolleyes:

iLoveYou 13.01.2003 15:55

Перечитал твой пост...
 
Цитата:

На самом деле кнопки у меня НЕ генерируются. Они готовыми лежат в библиотеке. Т.к. везде битмаповый рисунок.
Лишь когда дубли создаются - тока тогда.
Ты вообще в моем сорсе что-нибудь понял? Без обид, по-моему, нет. Я ж тебе, как и Петрович, готовый алгоритм дал. Не нужно ничего дублировать, не нужно имен, все сличается по заранее определенному признаку. И какая принципиальная разница: генерить или аттачить, а? Можно, конечно, делать так, как ты, но...
ЗЫ Памятуя об updateAfterEvent(), не буду спорить, а то опять намекнешь, что я ни хера, пардон, не знаю, в отличие от тебя... :)
ЗЗЫ благодарить потом будешь, когда будет готово - дашь ссылку...

Horror 13.01.2003 16:33

Да все я понял.
Просто изначально я пошел по пути, код к которому у меня был практически готов. С именами только затык был. Sergwizard помог решить эту проблему, поэтому я двигаюсь дальше в том же направлении.
Эту версию доделаю, попробую сделать в варианте, который предложил ты и Петрович.


ЗЫ - не надо снова болячки терзать, а? Намекал не я про то что ктото нихрена не знает. Я сказал человеку что upadateAfterEvent может помочь. Это мое мнение. Если тебе оно не нравится - объясни почему... Хамить то все горазды.

iLoveYou 13.01.2003 16:56

Цитата:

Намекал не я про то что ктото нихрена не знает.
Ты неудачно выразился, или кто-то другой намекал, а? :D
Цитата:

Хамить то все горазды
Если ты мне покажешь мою фразу, которая кажется тебе хамской, то это будет хорошо.
Цитата:

Я сказал человеку что upadateAfterEvent может помочь. Это мое мнение.
А еще ты обещал "функцию", и я ее хотел бы увидеть ;)

:)

Horror 13.01.2003 17:20

Вообще то это уже флейм пошел, но отвечу.
Урл тут, читай внимательно...

http://www.flasher.ru/forum/showthre...threadid=41761

Цитата:

Я-то как раз "ну-ну" могу говорить. А вот инструкцию себе ты написал выше.
Давай заканчивай короче, у меня абсолютно нет никакого желания трепатся на тему кто кому больше нагрубил.

По поводу функции - беру свои слова обратно. Обшибся. Не сработает она в том случае.

iLoveYou 13.01.2003 17:35

Ну если иронию принимать за хамство, то как тогда по улицам ходить, там же одни грубияны и хамы, особенно продавщицы и пьяные дворники. ;)
Мои слова так остро уж не воспринимай. Но тебе просто не мешает сбавить пылу...
Относительно функции - просто словами не бросайся :) :) :)
Желаю успехов. :)

Horror 13.01.2003 17:38

Ладно, проехали.
Закончу игруху, выложу исходник - поматюгаетесь :)

Horror 15.01.2003 15:02

Все в принципе готово.
Осталось таблицу результатов сделать и всякие мелкие штрихи.
Могу щас выложить в принципе или дождетесь финальной версии? ;)

iLoveYou 16.01.2003 18:00

Лучше - финальную.


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

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