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

Gsd666 19.06.2014 21:08

Цикл с проверкой всех переменных
 
проблема в реализации цикла с проверкой всех переменных (всех i и j чтобы проверил и только тогда выдал результат)
Код AS1/AS2:

function endgame(){
    for (var i=0; i<9; i++) {
        for (var j=0; j<9; j++) {
            while (_root["v"+i+"h"+j].text!=""){
                _global.endgame=true;
            }
        }
    }
}

что-то вроде этого смог придумать. не корректно работает. по другому надо как-то

P.S. пишу судоку, рэндом цифр организовал и валидацию, а это функция конца игры, её принцип - можно выиграть если все поля заполнены(!="") и нет ошибок заполнения(это я сам добавлю)

dark256 20.06.2014 00:51

Код AS1/AS2:

function endgame(){
 
var finish = true
 
    for (var i=0; i<9; i++)
    {
        for (var j=0; j<9; j++)
        {
            if ( _root["v"+i+"h"+j].text == "" )
            {
                finish = false
                break;              // При первом же не заполненном поле выходим из циклов
            }
        }
    }
 
if ( finish ) goFinish()
 
}


Gsd666 20.06.2014 17:20

Вложений: 1
спасибо, работает как надо. чуть подправил под себя
Код AS1/AS2:

function endgame(){
_global.endgame=true;
        for (var i=0; i<9; i++) {
                for (var j=0; j<9; j++) {
              if ( _root["v"+i+"h"+j].text=="" ) {
              _global.endgame=false;
              break;           
          }
                }
        }
}
 
onEnterFrame=function(){
        endgame();
        if (_global.endgame==true){
                _root.wrong="Congratulations!";
                _root.nextgo+=10;
        }
 
        if (_root.nextgo==400){
                gotoAndStop(4);
        }
}

теперь проблемы со сбросом _global.endgame появились. теперь после конца игры игнорит написанное в меню (1 кадр) строку _global.endgame=false;
картинку для наглядности самой игры приложил

Gsd666 20.06.2014 17:46

я понимаю что с Listener намного более адекватнее писать, но с ним у меня проблемы, не смог ничего вразумительного написать (не смог найти как связать Listener с экземплярами TextInput на заполнение), потому решил в каждом кадре, да и FPS я на 10 хотябы выставил, выкручиваюсь как могу
кончено был бы рад помощи с Listener :)

dark256 20.06.2014 18:37

Код AS1/AS2:

my_text_field.onChanged = function(){
        endgame()
}


Gsd666 20.06.2014 18:49

Код AS1/AS2:

onEnterFrame=function(){
        for (var i=0; i<9; i++) {
                for (var j=0; j<9; j++) {
              _root["v"+i+"h"+j].onChanged = function(){
                          endGame();
                          trace("asdas");
                  }
                }
        }
}

так не работает. повторюсь, использую экземпляры (_root["v"+i+"h"+j]) компоненты TextInput

dark256 20.06.2014 20:00

Должно работать, собссно. Событие есть событие, пофигу, как вы к экземпляру объекта обращаетесь.....

А.........

Забудьте вы про onEnterFrame!..... Не надо это раз в 10 сек проверять. СОБЫТИЕ - генрится и создается само.

Соотв ОДИН раз полям текстовым прописали это событие и все. Сидиет, ждете, когда телефон прозвонит :)

Подписались и забыли - далее оно само.
А тут... все что угодно может произойти.. При таком вот....

Добавлено через 2 минуты
Цитата:

Сообщение от Gsd666 (Сообщение 1168082)
так не работает. повторюсь, использую экземпляры (_root["v"+i+"h"+j]) компоненты TextInput

Стоп. КОМПОНЕНТЫ? Зачем? Просто тупо текстовое поле ручками... в квадртаике. И размножить....
За именно компоненты не скажу - там черт ногу сломит, все вкривь и вкось и проще самому создать таковой. Тем более, что ничего сложного вообще не наблюдается.

Gsd666 20.06.2014 23:42

вытащил из onEnterFrame, только все равно не реагирует никак. все из-за компоненты этой скорее всего
Цитата:

тупо текстовое поле
я так изначально и сделал. но мне нужна была такая вещь: _root["v"+i+"h"+j].editable=true;
вроде как на обычном тексте(вводимом) нельзя такое, и что-то там еще было..
с компонентами так можно:
Код AS1/AS2:

for (var i=0; i<9; i++) {
        for (var j=0; j<9; j++) {
                _root["v"+i+"h"+j].color=0x666666;
                _root["v"+i+"h"+j].bold=true;
                _root["v"+i+"h"+j].fontSize=30;
                _root["v"+i+"h"+j].maxChars=1;
                _root["v"+i+"h"+j].editable=true;
        }
}

//не по теме. поиграл в вашу Orbox порадовало, да и фотки доставили на сайте )) тоже кстати хочу дописать эту игру и на свой народ закинуть :D

dark256 21.06.2014 10:35

Вложений: 1
НА input поле такое таки можно точно также. Все, что есть в компонентах, реализуемо средствами AS с нуля.

Вот, собственно, весь ваш бином Ньютона (вложение ниже) :)

Код:

selectable (TextField.selectable property)
public selectable : Boolean

A Boolean value that indicates whether the text field is selectable. The value true indicates that the text is selectable. The selectable property controls whether a text field is selectable, and not whether a text field is editable. A dynamic text field can be selectable even if it is not editable. If a dynamic text field is not selectable, that means you cannot select its text.

If selectable is set to false, the text in the text field does not respond to selection commands from the mouse or keyboard, and the text cannot be copied using the Copy command. If selectable is set to true, the text in the text field can be selected using the mouse or keyboard. You can select text this way even if the text field is a dynamic text field instead of an input text field. The text can be copied using the Copy command.


Example
The following example creates a selectable text field that constantly updates with the current date and time.

this.createTextField("date_txt", this.getNextHighestDepth(), 10, 10, 100, 22);
date_txt.autoSize = true;
date_txt.selectable = true;

var date_interval:Number = setInterval(updateTime, 500, date_txt);
function updateTime(my_txt:TextField) {
    my_txt.text = new Date().toString();
}


The MovieClip.getNextHighestDepth() method used in this example requires Flash Player 7 or later. If your SWF file includes a version 2 component, use the version 2 components' DepthManager class instead of the MovieClip.getNextHighestDepth() method.


dark256 21.06.2014 10:37

Цитата:

Сообщение от Gsd666 (Сообщение 1168090)
//не по теме. поиграл в вашу Orbox порадовало, да и фотки доставили на сайте )) тоже кстати хочу дописать эту игру и на свой народ закинуть :D

А это не моя. Это я где-то просто утащил и разместил.
На "народ"... ну... в ВК проще приложение разместить и на страничку... типа :)

Gsd666 21.06.2014 20:07

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

всем этим займусь позже когда время будет. будут вопросы, обращусь сюда)

на счет вк, там реком. исп. as3 и вроде как понял беспл можно там выложить


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

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