Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.04.2014, 09:13
Аватар для Atner
Новичок на форуме
Отправить личное сообщение для Atner Посмотреть профиль Найти все сообщения от Atner
 
Регистрация: 20.06.2008
Сообщений: 2

рисование в canvas дерева через рекурсивную функцию
На сайте learn.code.org встретился простой пример рисования дерева через рекурсивную функцию.

Там и код прилагается

Захотел попробовать повторить нарисовать в javascript через canvas. Да вот как-то рекурсивная функция не работает - пример jsfiddle. Прошу подсобить советами.

drawTree(context, 9, 2);
 
function drawTree(context,depth,branches) {
    var step=5;
    if (depth>0) {
            //выбрать цвет
            context.strokeStyle = 'rgb(' + Math.round(Math.random()*255) + ',' + Math.round(Math.random()*255) + ',' + Math.round(Math.random()*255) +')';
            //рисуем
            drawTo2(context,step*depth,angle);
            angle = angle + 40;
            for (a=0; a<=branches; a++) {
                angle = angle - (180/branches);
                drawTree(context,depth-1, branches);
            };
            angle = angle+50; 
                drawTo2(context,step*depth,angle);
 
            } else {
            //alert ('no depth deifined');
    };
    };
 
function drawTo2(context, length, angle) {
        //angle = angle + 90;
        x1 = x + (Math.sin(angle*Math.PI/180)*length); 
        y1 = y + (Math.cos(angle*Math.PI/180) *length); 
        context.moveTo(x,y);
        context.lineTo(x1,y1);
        x = x1;
        y = y1;
    }

	
atner на форуме Сообщить модератору о нарушении

Последний раз редактировалось Atner, 30.04.2014 в 12:59.
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2014, 11:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Atner,
пренебрежение к var особенно в строке 11 тут или строке 101 там -- да и в прочих местах даёт непредсказуемые результаты )))
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2014, 13:45
Аватар для Atner
Новичок на форуме
Отправить личное сообщение для Atner Посмотреть профиль Найти все сообщения от Atner
 
Регистрация: 20.06.2008
Сообщений: 2

Удивительное дело - добавил var
for (var a=0; a<=branches; a++)

и всё заработало!

Спасибо мил человек Рони!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к переменной внутри объекта, в произвольной функцию через его метод platedz Элементы интерфейса 15 25.08.2012 00:03
Установка цвета через функцию .css() сбрасывает цвет для :hover xintrea jQuery 4 18.08.2012 15:38
Через argument.callee не получается переписать функцию. Jurasmi Общие вопросы Javascript 2 23.03.2011 12:54
jQuery, jsTree - обновление дерева через ajax extremum.func jQuery 2 09.11.2009 14:48
Как передать false через функцию? Tend Общие вопросы Javascript 7 16.03.2009 16:55