1

Тема: Як із функції F1 об'єкту Obj, викликати функцію F2 обє'кта Оbj ?

Хаї, от намагаюсь написати тетріс використовуючи jQuery, і звісно, що без JS я обійтися не можу ніяк. Я зробив об'єкт, котрий має бути фігурою, і всучив йому дві функціх, перша функція має відображати об'єкт на полі, а інша має його спускати вниз, ну я розпочав з малого, це потім вже будуть інші дії, а поки що тільки це. Так от, я не можу викликати функцію із функції, чому так?

$(document).ready(
    function()
    {
        var figure = {
            positions:[[0,0],[0,1],[0,1],[0,1]],
            color:"red",
            name:"line",
            Init: function(x,y,field){
                for(var i=0;i<4;i++)
                {
                    x+=this.positions[i][0];
                    y+=this.positions[i][1];
                    $(field[x][y]).css({"background":this.color});
                }
            },

            Move: function(field)
            {
                var x = 0,y=5;
               var interval = setInterval(
                function(){
                    this.Init(x,y,field);
                    x++;
                },500
            );
            }
        };

        var x = $("table tr:first-child>td").length;
        var y = $("tr").length;

        var field = [y];
        for(var i=0; i<y;i++)
        {
            field[i]=[x];
            var ii = i+1;
            var row = $("table tr:nth-child("+ii+") td");

            for(var j =0; j<x; j++)
            {
                field[i][j]=row[j];
            }
        }

        figure.Move(field);

    }

);

2

Re: Як із функції F1 об'єкту Obj, викликати функцію F2 обє'кта Оbj ?

Ви певні, що саме не можете викликати функцію, а не функція не працює? Поставте там алерти чи логи, щоб побачити, що не спрацьовує.

3

Re: Як із функції F1 об'єкту Obj, викликати функцію F2 обє'кта Оbj ?

koala написав:

Ви певні, що саме не можете викликати функцію, а не функція не працює? Поставте там алерти чи логи, щоб побачити, що не спрацьовує.

воно помилку показує
http://не-дійсний-домен/85Viz.png

4

Re: Як із функції F1 об'єкту Obj, викликати функцію F2 обє'кта Оbj ?

Ще. Раз. Прочитайте. Що. Я. Написав. І. Зробіть. Це.

5 Востаннє редагувалося Invader (12.04.2014 20:32:54)

Re: Як із функції F1 об'єкту Obj, викликати функцію F2 обє'кта Оbj ?

Пишіть отак (вказуючи ім’я об’єкту):

figure.Init()

або отак:

 Move: function(field)
{
var x = 0,y=5;
var interval = setInterval(
function(variableName){
variableName.Init(x,y,field);
x++;
},500, this
);

Читати: Правильный захват контекста в Javascript

Щодо питання чому, то на мою думку всередині  функції setInterval змінюється контекст виконання на об’єкт window а у об’єкта відсутня така функція.

Подякували: FakiNyan, koala2