Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2016, 11:54
Новичок на форуме
Отправить личное сообщение для Freekazoid Посмотреть профиль Найти все сообщения от Freekazoid
 
Регистрация: 01.12.2016
Сообщений: 8

Запись в переменную ссылку на функцию
Есть функции рисующие в canvas как можно реализовать переключение между функциями.
думал сделать переменную в которой записывается название нужной функции. И делать по выводу переменной самих функций.
Но это не сработало.
Подскажите как можно реализовать переключение между функциями от рисовки фигур на canvas'е?
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2016, 12:24
Новичок на форуме
Отправить личное сообщение для Freekazoid Посмотреть профиль Найти все сообщения от Freekazoid
 
Регистрация: 01.12.2016
Сообщений: 8

var activs = {
	a: '',
	play: function() { 
    var activ = ['player.troin()', 'player.pram()', 'player.kvadr()', 'player.ugolL()', 'player.ugolR()', 'player.ugol()']; 
	  if (activs.a == ''){
	    function getRandomInt(min, max){return Math.floor(Math.random() * (max - min + 1)) + min; };
		  s =	getRandomInt (0, 5);
		  activs.a = activ[s];
	    console.log('рабора рендома '+ activs.a);
	  return activs.a;
	 };
	}
};
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2016, 13:09
Новичок на форуме
Отправить личное сообщение для Freekazoid Посмотреть профиль Найти все сообщения от Freekazoid
 
Регистрация: 01.12.2016
Сообщений: 8

Есть 6 функций от рисовки объектов.
Нужно сделать посменный вывод онных.
Использую рандом в качестве проверки смены. т.е. при загрузки случайным образом должна выводится определенная фигура из массива activ.
Далее записываю имя функции в переменную activs.a и делаю вызов данной фигуры.
Но если нужно сменить ее делаю повторный запрос к рендому и должен получить новую фигуру.
Загвоздка в том что переменная выводится но от рисовка не идет.
Если напрямую указать на фигуру то все работает, отрисовывается.
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2016, 13:44
Новичок на форуме
Отправить личное сообщение для Freekazoid Посмотреть профиль Найти все сообщения от Freekazoid
 
Регистрация: 01.12.2016
Сообщений: 8

это запрос на от рисовку
if (!activs.a) {activs.play();/* console.log('есть 1'); */} else {activs.a; /* console.log('есть 2 '+activs.a); */ } ;


массив с именами функций
var activ = ['player.troin()', 'player.pram()', 'player.kvadr()', 'player.ugolL()', 'player.ugolR()', 'player.ugol()'];


выбор что рисовать
var activs = {
	a: '',
	play: function() { 
    var activ = ['player.troin()', 'player.pram()', 'player.kvadr()', 'player.ugolL()', 'player.ugolR()', 'player.ugol()']; 
	  if (!activs.a){
	    function getRandomInt(min, max){return Math.floor(Math.random() * (max - min + 1)) + min; };
		  s =	getRandomInt (0, 5);
		  activs.a = activ[s];
	    console.log('работа рендома '+ activs.a);
	  return activs.a;
	 };
	},
};


сама от рисовка 1го объект
var player = {
	size: 20, /* размер блока */
	step: 20, /* шаг спуска */
	x: 180,		/* положение появления с верху */
	y: 0,		/* положение появления с низу */
		/*/ Отрисовка  /*/
ugolR: function() {   	 /* Уголник правый */   
	ctx.linew = 2; // ширина линии
		/* Цвет обьекта */
	ctx.fillStyle = "rgb(255, 255, 255)"; // цвет заливки 
	ctx.strokeStyle = "rgb(255, 255, 255)"; // цвет линии
		/* контур */
	ctx.strokeRect(this.x,this.y-40,this.size,this.size);
	ctx.strokeRect(this.x,this.y-20,this.size,this.size);
	ctx.strokeRect(this.x-20,this.y-20,this.size,this.size);
	ctx.strokeRect(this.x-20,this.y,this.size,this.size);
		/* заливка */
	ctx.fillRect(this.x+2.5,this.y+2.5-40,this.size-5,this.size-5);
	ctx.fillRect(this.x+2.5,this.y+2.5-20,this.size-5,this.size-5);
	ctx.fillRect(this.x+2.5-20,this.y+2.5-20,this.size-5,this.size-5);
	ctx.fillRect(this.x+2.5-20,this.y+2.5,this.size-5,this.size-5);
	},
}

ну и вызов отрисовки напрямую
player.ugolR();

вроде все.

Последний раз редактировалось Freekazoid, 02.12.2016 в 13:47.
Ответить с цитированием
  #5 (permalink)  
Старый 02.12.2016, 15:22
Новичок на форуме
Отправить личное сообщение для Freekazoid Посмотреть профиль Найти все сообщения от Freekazoid
 
Регистрация: 01.12.2016
Сообщений: 8

Разобрался)
приходит строка а не функция, поэтому не работало.
eval(activs.a);

eval();
- Выполняет как код нашу строку из переменной.

Спасибо за помощь.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить такую функцию при нажатии на ссылку? varde Общие вопросы Javascript 0 18.07.2015 23:13
Jquery добавить в функцию переменную _Eldar_ Общие вопросы Javascript 6 16.04.2015 20:23
Передать переменную не вызывая функцию Tord002 Общие вопросы Javascript 2 21.12.2014 23:18
Скопировать ссылку через JS alerzo Элементы интерфейса 1 02.09.2014 12:01
записать переменную в ссылку (синтаксис) 2rION Общие вопросы Javascript 3 09.08.2009 21:46