PDA

Просмотр полной версии : Непойму почему невыполняется условие


lukish
04.11.2007, 18:25
Здравствуйте Уважаемые флешеры, немогу понять почему невыполняется условие :
if (с == 9) {
trace("oh");
}
в
c = 0;
arr = new Array(null, null);
// заполним массив пустыми элементами
keyListener = new Object();
keyListener.onKeyDown = function() {
arr.shift();
// выкидываем первый элемент массива
arr.push(Key.getCode());
// добавляем в конец второй
if (arr[0] == 80 && arr[1] == 70) {
setFlower(zwet1);
} else if (arr[0] == 80 && arr[1] !== 70) {
_root.teremosha.play();
}
if (arr[0] == 68 && arr[1] == 70) {
setFlower(zwet2);
} else if (arr[0] == 68 && arr[1] !== 70) {
_root.teremosha.play();
}
......
......
......
if (arr[0] == 72 && arr[1] == 70) {
setFlower(zwet9);
} else if (arr[0] == 72 && arr[1] !== 70) {
_root.rukawiza.play();
}
};
Key.addListener(keyListener);
function setFlower(flower) {
flower.gotoAndStop(2);
}
pySound = new Sound();
pySound.attachSound("sobrat");
pySound.start();
if (c == 9) {
trace("oh");
}

И вроде всё впорядке, а условие почемуто не выполняется:confused:
Переменную с проверяю она изменяется до 9 как положенно.

udaaff
04.11.2007, 18:32
А когда оно у вас должно выполняться?

DarkLight
04.11.2007, 18:34
У Вас проверка выполняется 1 раз в самом начале выполнения ролика.

BigDan
04.11.2007, 18:37
я вообще не заметил, что с меняет свое значение.

udaaff
04.11.2007, 18:42
lukish, я же вам писал нормальный код для получения слога, зачем этот огород городить?
var s:String = " ";
var keyListener:Object = new Object();
keyListener.onKeyDown = function()
{
s = s.concat(String.fromCharCode((Key.getAscii()))).substr(1);

if (s == "ya") {
trace(s);
} else if (s == "hi") {
trace(s);
} // и так далее...
};
Key.addListener(keyListener);

lukish
04.11.2007, 21:48
udaaff - То условие о котором я спрашиваю оно выполняет другую функцию, то о чём Вы поправляетет меня с тем у меня всё впорядке, я имею в виду конец фильма когда цветы все собранны 9 цветов - переменная с прибовляется 9 раз и вот это условие которое должно выполнится - если с ==9 то (к примеру trace("oh");) переход к концу.
Переменная меняется в конструкторе каждого из цветков например:

this._x = 640;
this._y = 200;
this._xscale = 35;
this._yscale = 70;
this._rotation = 35;
_root.teremosha.rot.play();
pySound = new Sound();
pySound.attachSound("ka")
pySound.start()
_root.c += 1;
trace(_root.c);

Darklight - Ваша версия более правдоподобна, но фольм не линейке статичный стоит на одном кадре, только цветы меняют положнние
this._x = 640;
this._y = 200;
Поэтому я думаю что проверку условия с он проверяет постоянно, а может я не прав?

DarkLight
04.11.2007, 21:51
Вы не правы. Если мувик стоит на одном кадре, ты выполняется только onEnterFrame, интервалы и обработчики событий. Остальной код выполняется при каждом прохождении через кадр с другого, чего у Вас не наблюдается. Проверить можно поставив в else какой-нибудь дрйгой trace

udaaff
04.11.2007, 22:28
var s:String = " ";
var str:String = "ya^hi^ui^";

var keyListener:Object = new Object();
keyListener.onKeyDown = function()
{
s = s.concat(String.fromCharCode((Key.getAscii()))).substr(1);
if (s == "ya" || s == "hi" || s == "ui") {
str = del(str, s + "^");
if (str.length == 0) {
trace("the end");
}
}
};
Key.addListener(keyListener);

function del(src:String, s:String):String
{
return src.split(s).join("");
}


upd: Можно проще :)

var s:String = " ";
var str:String = "ya^hi^ui^";
var keyListener:Object = new Object();
keyListener.onKeyDown = function()
{
if ((str = str.split((s = s.concat(String.fromCharCode((Key.getAscii()))).substr(1)) + "^").join("")).length == 0) trace("the end");
};
Key.addListener(keyListener);



upd: Можно еще немного сократить =)
var s:String = " ";
var str:String = "ya^hi^ui^";
Key.addListener({onKeyDown: function(){if ((str = str.split((s = s.concat(String.fromCharCode((Key.getAscii()))).substr(1)) + "^").join("")).length == 0) trace("the end")}})

upd3: Можно еще чутка подсократить.. и все пожалуй на этом.
Key.addListener({onKeyDown:function(){if((r=(r?r:"ya^hi^ui^").split((s=(s?s:" ").concat(String.fromCharCode((Key.getAscii()))).substr(1))+"^").join("")).length==0)trace("the end")}})