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

LanSelven 25.09.2009 19:28

От перемены мест слагаемых сумма не меняется
 
Идет постоянно приравнивание 'g'+n = 'b'+n
значение b меняют местами
например:
b1 получает значение b4
а b4 значение b1
как сделать так, чтобы g от этого не изменилось?
Я пытался сделать методом
'g'+n = 'b'+s'n'
где s должно меняться когда b меняются местами
т.е с начало s совпадало с n, а когда b1 меняют на b4 то s меняет свое значения на 4, а было 1.
Вот только как это сделать?

iNils 25.09.2009 19:44

Ничего не понял. Что за ' ?

LanSelven 25.09.2009 19:47

Вложений: 1
Ну я и не ждал что кто-то поймет, просто хотел увидить первую реакцию и попытатся обьяснить....
сейчас попробую
Добавлено через 53 минуты
Код AS1/AS2:

FirstOff = false
num = 0;
for(n=1;n<5;n++) {
        _root['s'+n] = n
}
this.onEnterFrame = function() {
        for(n=1;n<5;n++) {
                _root['g'+n].text = _root['b'+_root['s'+n]].text
        }
        if (!FirstOff) {
        btn1.onRelease = function() {num =1}
        btn2.onRelease = function() {num =2}
        btn3.onRelease = function() {num =3}
        btn4.onRelease = function() {num =4}
        }
        else{
                btn1.onRelease = function() {num2 =1}
                btn2.onRelease = function() {num2 =2}
                btn3.onRelease = function() {num2 =3}
                btn4.onRelease = function() {num2 =4}
        }
        if ((num != 0) or (num2 !=0)) {
                if(!FirstOff) {
                Fun1();}
                else {Fun2();}
        }
}
function Fun1() {
        ChooseOne = num;
        num = 0;
        reserv1 = _root['b'+ChooseOne].text
        FirstOff = true;
}
function Fun2() {
        ChooseTwo = num2
        num2 = 0;
        reserv2 = _root['b'+ChooseTwo].text
        Fun3();
}
function Fun3() {
        //И вот тут наверное Что-нибудь сделать с s чтобы g не менялось
        _root['b'+ChooseTwo].text = reserv1;
        _root['b'+ChooseOne].text = reserv2;
        FirstOff = false;
}

Вот пример:

С Начало пытался сделать следующее:
Код AS1/AS2:

_root['s'+ChooseOne] = ChooseTwo
        _root['s'+ChooseTwo] = ChooseOne

Не вышло, так как 1 раз срабатывает, а потом синхронно меняются

Добавлено через 2 минуты
Потом так
Код AS1/AS2:

_root['s'+_root['s'+ChooseOne]] = ChooseTwo
_root['s'+_root['s'+ChooseTwo]] = ChooseOne

Тут работало 50 на 50. Если менять одинаковые области местами все нормально, но если хаотично, то система давала сбой...И что не пытаюсь, до максимум 50 на 50...

iNils 25.09.2009 20:58

Примеры надо выкладывать в наиболее низкой возможной версии.

flash33 25.09.2009 21:06

LanSelven, приведите пример до минимума, а то рак мозга

LanSelven 25.09.2009 21:28

Вложений: 1
Я извиняюсь за CS4...Все забываю...
Нагляднее и проще чем во флеш примере, ну никак...
Да уж, это точно рак мозга, у меня кровь из ушей идет....

LanSelven 25.09.2009 23:14

Ну же)) все ведь просто
Код AS1/AS2:

O_o = _root['s'+ChooseTwo]
_root['s'+_root['s'+ChooseOne]] = ChooseTwo
_root['s'+O_o] = ChooseOne

Вот так т.е работает 50 на 50, но...не работает как надо...
Все вроде так просто, но все очень сложно...

Добавлено через 40 секунд
И все очень сложно, но все просто

iNils 25.09.2009 23:42

Код AS1/AS2:

var flag:Boolean = false;
var choice:Number;
 
for (var i:Number = 1; i<5; i++) {
        _root['g'+i].text = _root['b'+i].text;
        _root['btn'+i].i = i;
        _root['btn'+i].onRelease = onBtnRelease;
}
 
function onBtnRelease() {
        if (flag) {
                var str:String = _root['b'+choice].text;
                _root['b'+choice].text = _root['b'+this.i].text;
                _root['b'+this.i].text = str;
        } else {
                choice = this.i;
                trace(this);
        }
        flag = !flag;
}


LanSelven 25.09.2009 23:59

Вся проблема в том, что g должно равняться b...
т.е при изменении b менялось и g
но при изменении b местами, g не менялось, в этом то и была задумка s
А так я тоже могу приравнять в начале b к g и просто менять b отдельно =)

iNils 26.09.2009 00:50

Мда, чтобы понять, что вам нужно, потребовалось 5 часов, а все их-за того, что вместо описания цели, вы описали непонятные b и g.
Описать задачу надо было так:
Цитата:

Есть два столбика с текстовыми полями и один столбик с кнопками. При изменении текста в поле правого столбика, текст в левом также должен меняться. При нажатии двух любых кнопок, тексты полей правого столбика, напротив кнопок, должны поменяться местами, но без изменений текста в левом столбике.
Код AS1/AS2:

var flag:Boolean = false;
var choice:Number;
 
for (var i:Number = 1; i<5; i++) {
        _root['g'+i].text = _root['b'+i].text;
        _root['b'+i].onChanged = onTextChanged;
        _root['b'+i].i = i;
        _root['btn'+i].i = i;
        _root['btn'+i].onRelease = onBtnRelease;
}
function onTextChanged() {
        _root['g'+this.i].text = _root['b'+this.i].text;
}
function onBtnRelease() {
        if (flag) {
                var str:String = _root['b'+choice].text;
                _root['b'+choice].text = _root['b'+this.i].text;
                _root['b'+this.i].text = str;
        } else {
                choice = this.i;
                trace(this);
        }
        flag = !flag;
}



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

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