Профиль пользователя заблокирован сроком с 29 августа 2016 г. и навсегда по причине: Снова мат
Ответы пользователя по тегу JavaScript
  • Анимация вращения элементов на чистом js?

    copal
    @copal
    𝄞 ...оооо baby
    Читайте про матрицы.

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<style>
    		body{
    			background: #202020;
    		}
    
    		div.rect {
    			width: 50px;
    			height: 50px;
    
    			background: yellow;
    		}
    	</style>
    </head>
    <body>
    	<div class="rect" id="rotate-rect"></div>
    	<script>
    		var rect = document.getElementById('rotate-rect');
    		var a = 1, b = 0, c = 0, d = 1, tx = 10, ty = 10, angle = 0, currentAngle;
    
    		function getAngleToRAD(){
    			if(angle === 360){
    				angle = 0;
    			}
    
    			return angle++ * Math.PI / 180;
    		}
    		
    
    		function update(){
    			currentAngle = getAngleToRAD();
    
    			rect.style.transform = 'matrix(' + Math.cos(currentAngle) + ',' + Math.sin(currentAngle) + ',' + -Math.sin(currentAngle) + ',' + Math.cos(currentAngle) + ',' + tx + ',' + tx + ')'
    			window.requestAnimationFrame(update);
    		}
    
    		update();
    	</script>
    </body>
    </html>
    Ответ написан
  • Как раpставить обекты в canvas?

    copal
    @copal
    𝄞 ...оооо baby
    Вот есть о рисовании - рисование фигур с помощью canvas.
    Ответ написан
    Комментировать
  • Почему в JavaScript у объекта Map есть свойство size, а не length как у других объектов?

    copal
    @copal
    𝄞 ...оооо baby
    Возможно для для того, чтобы отбить желание итерировать в циклах for и while выбирая элементы по индексу, ведь map и set не индексированный массив.
    Но как гласят доки из set и map элементы можно получать в том порядке, в котором их туда добавляли.
    Ответ написан
    Комментировать
  • В каких ситуациях используется шаблон фабрика в Javascript?

    copal
    @copal
    𝄞 ...оооо baby
    На самом деле шаблон фабрика, не путать с абстрактной фабрикой и сейчас не помню но есть и ещё какая-то, используется повсеместно и является очень хорошим примером ооп. Её суть в том чтобы сделать жизнь получателя наиболее комфортной. Ниже самый простой пример, в котором от показывается как на фабрике собирается кнопка о которой получатель знает лишь то, что она прибавляет карму. Если я сделаю таких кнопок очень много, а потом решу поменять её скин, то мне не придется бегать по коду и изменять её отовсюду, а нужно будет сменить лишь сборку на фабрике.
    var ButtonFactory = (function(){
      function ButtonFactory(){
        
      }
      
      ButtonFactory().prototype.getLikeButton = function(){
        	var likeButton = document.createElement('button');
        	likeButton.style.background = 'ff00ff';
        	likeButton.style.innerHTML = 'like';
    
            return likeButton;
      };
      
      return ButtonFactory;
    })();
    
    var buttonFactory = new ButtonFactory();
    
    document.getElementsByTagName('body')[0].appendChild(buttonFactory.getLikeButton());
    Ответ написан
    Комментировать
  • Как вернуть свойства объекта к прототипным/стартовым?

    copal
    @copal
    𝄞 ...оооо baby
    Упрощенный вариант того, что Вам нужно -
    var Snake = (function(){
    	function Snake(){
    			this.body = [];
    			this.score = 180;
    			this.gameTime = 0;
    			this.level = 0;
    			this.levelStep = 0;
    	}
    
    	return Snake;
    })();
    
    var snake = new Snake(); // у этого объекта свойства по умолчанию
    ...
    ...
    snake = new Snake(); // теперь присваеваем свойству snake новый объект с свойствами по умолчанию
    Ответ написан
    4 комментария
  • Как правильно комментировать код JS?

    copal
    @copal
    𝄞 ...оооо baby
    /**
     * [param description]
     * @type {[type]}
     */
    var param = null;
    
    /**
     * [method description]
     * @param  {[type]} a [description]
     * @param  {[type]} b [description]
     * @param  {[type]} c [description]
     * @return {[type]}   [description]
     */
    function method(a, b, c){
    	return a + b + c;
    }
    Ответ написан
    1 комментарий
  • Производительность canvas анимации?

    copal
    @copal
    𝄞 ...оооо baby
    Соглашусь с предыдущими ораторами, но от части. requestAnimationFrame это хорошо, но на сколько я знаю, полифилом её не заменить, так как она должна синхронизироваться на уровне движка.

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

    Тут нужно сглаживать дельту времени. И у pixi я такого сглаживания не видел. Хотя я вообще на уровне фраймворков из коробки такое не видел.

    И pixi это рендер для gpu, который не для новичков. Не стоит его вообще пропагандировать в среде web-jquery'стов.)
    Ответ написан
  • Стоит ли изучать и использовать haxe вместо js и php?

    copal
    @copal
    𝄞 ...оооо baby
    Haxe - язык, который можно скомпилировать почти в любой другой. Но нельзя сказать, что можно выучить haxe для его последующий компиляции в php не зная php. Ведь haxe как язык ничего нового не принес в этот мир, а лишь повторяет api языков в которые компилируется.

    Так же я никогда не видел чтобы эксперты анализировали полученный код. Все говорят что у кода полученного с помощью haxe выше производительность (это не имеет отношения к inline), но лично мне кажется что это из-за пренебрежения канонами ооп.

    Я бы не стал его рекомендовать учить как язык.
    Ответ написан
    1 комментарий
  • Как реализовать цикл?

    copal
    @copal
    𝄞 ...оооо baby
    var json = {
    	"stops" : [{
    		"zoneId":"5522bdb1e4b047df5b5b7afa",
    		"coords":[[
    			[49.25100320801442,28.541126489672024],
    			[49.25156346163994,28.542151093515713],
    			[49.25113626882619,28.542376399072964],
    			[49.25074759018555,28.541657567056973],
    			[49.25076509829823,28.54119622710641],
    			[49.25100320801442,28.541126489672024]
    		]],
    		"name":"Ватутина",
    		"description":""
    	}]
    };
    
    var polygonCoords = [];
    var coords = json.stops[0].coords[0],
    	length = coords.length,
    	point,
    	POSITION_X = 0,
    	POSITION_Y = 1;
    
    for(var i = 0; i < length; i++){
    	point = coords[i];
    
    	console.log(point[POSITION_X],point[POSITION_Y]);
    	// new google.maps.LatLng(point[POSITION_X],point[POSITION_Y]);
    }

    function initialize_map( ) {
         var latlng = new google.maps.LatLng(info.stops[0].coords[0][0]);
         var myOptions = {
         zoom: 18,
         center: latlng,
         mapTypeId: google.maps.MapTypeId.ROADMAP
         };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
        var polygonCoords = [];
         //  ниже, я сохранил ссылку на json в свойство json,
         //  но как видно из Вашего кода, он у Вас называется info
         //  по этому я закоментирую свою строчку и оставлю Вашу.
        // var coords = info.stops[0].coords[0],
        var coords = info.stops[0].coords[0],
    
          length = coords.length,
          point,
          POSITION_X = 0,
          POSITION_Y = 1;
    
        for(var i = 0; i < length; i++){
          point = coords[i];
    
          polygonCoords.push(new google.maps.LatLng(point[POSITION_X],point[POSITION_Y]));
        }
        
         var polygon = new google.maps.Polygon({
          path: polygonCoords,
          strokeColor: "#5196DB",
          strokeOpacity: 1,
          strokeWeight: 2,
          fillColor: "#8ab9e7",
          fillOpacity: 0.5
         });
         polygon.setMap(map);   
         return map;
       }
    Ответ написан
    3 комментария
  • Какие вы видите перспективы в развитии js "оберток"?

    copal
    @copal
    𝄞 ...оооо baby
    В моем представлении о препроцессорах ниша для coffescript занята теми, кто предпочитает философию ruby.
    В сторону typescript смотрят те, кто перешел из типизированных языков и на
    данный момент не может представить, как можно сделать крупное приложение не программируя
    "на интерфейсах", каковым является философия типизированных языков.
    Поклонники Babel, это третья сторона силы, которая сейчас учится будущему.

    Лично я смотрел coffe и скомпилированный код мне понравился меньше, чем чисты, как слеза,
    скомпилированный код typescript.
    И я остановился на Babel, потому что js беден без последних новшеств, а выбирая между написания целой библиотеки или использовать точно такую же плюс учась завтрашнему синтаксису, я выбрал второе.
    Ответ написан
    5 комментариев
  • Почему gulp-compass не компилируется?

    copal
    @copal
    𝄞 ...оооо baby
    По дате создания вопроса можно сказать, что Вы уже нашли решение,
    но для будущих поколений отвечу - для работы gulp-compass нужно
    первым делом установить ruby и вписать его в переменную PATH. Вторым
    нужно установить -
    gem install sass
    gem install compass
    Ответ написан
    Комментировать
  • Gulp. Как осуществить пропуск ошибок в js?

    copal
    @copal
    𝄞 ...оооо baby
    Это Вам gulp-plumber нужен.
    Он не дает упасть gulp, а вместо этого выводит сообщение об ошибке.
    Ответ написан
    1 комментарий
  • Как сменить scope функции?

    copal
    @copal
    𝄞 ...оооо baby
    // на это замыкание не ведет ни одной ссылки.
    (function(window){
    // someVar не является частью замыкания.
    // чтобы somevar относилась к полю замыкания
    // её нужно объявить с контекстом this.
    // То есть 
    // this.somevar =[];
      var somevar =[];
    
      // свойство x не является частью замыкание,
      // так как объявлено с контекстом window.
      window.x = function  () {
      //
      //
      }
      x.y = function() {
        // имеем доступ к somevar
      }
    })(window);
    
    var newy = function () {
      // отсюда тоже хотим работать с somvar
    }
    //делаем
    // таким образом невозможно обратится к 
    // области видимости замыкания, так как 
    // ссылка на функцию х не имеет никакого отношения 
    // к этому самому замыканию. Оно объявленно в window.
    x.y=newy;
    Ответ написан
    Комментировать
  • Как сделать эффект соединения кусочков изображения в одно целое?

    copal
    @copal
    𝄞 ...оооо baby
    Теоретически это должно выглядеть примерно так -
    1) отталкиваясь от размеров экрана создать нужное количество квадратиков.
    2) учитывая размеры квадратиков рассчитать для каждого координаты на плоскости и сохранить их.
    3) каждому квадратику расчитать рандомное положение на плоскости ( x, y, rotation ).
    4) задать квадратикам рандомные координаты и сохранить.
    5) подписаться на событие прокрутки колеса мыши и рассчитать сколько "анимационного времени" должно пройти за определенное значение дельты.
    5) задать анимацию движения от "текущего положения" к "положению рассчитанному на шаге 2.
    6) начать крутить колесиком и смотреть, как из рандомных координат картинка начинает собираться.
    7) после того, как она соберётся установить интервал для прокрутки колеса мыши, например в пол прокрутки, чтобы анимация не реагировала.
    8) после того, как будет преодолен установленный на предыдущем шаге интервал, начать анимацию приводящую сложенною картинку, обратно к рандомным координатам.

    Приблизительно вот так. Но Вы сделайте сначала один квадратик и приладьте к нему анимацию, чтобы он туда-сюда собирался. Потом увеличьте до двух, трех и так далее.
    Ответ написан
    Комментировать
  • Какие есть альтернативы WebStorm для разработки проекта на Node.js?

    copal
    @copal
    𝄞 ...оооо baby
    Если бы у меня были деньги на покупку любой из существующих ide,
    а SublimeText у меня уже был, то я бы не стал ничего покупать, а стал
    работать за бесплатной c9.
    Каждый раз, когда я в неё играюсь, мне искренне не хочется её закрывать.
    На секунду она заставляет усомнится в ST...
    Если кто-то пробовал её в бою, то был бы рад почитать о ней комменты прямо тут.
    Ответ написан
    3 комментария