Javascript.RU

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

javascript new object
так работает мой прогресбар
но при создании нового мне приходится делать копипаст,

var canvas3 = document.getElementById("canvas-3");
var ctx3 = canvas3.getContext('2d');
var color = '#2af';
var width = /*canvas.width*/ 100;
canvas3.height = /*width*/ 100;
var height = /*canvas.height*/ 100;
var percent_3 = 9.5;
var percent3 = percent_3 *10;
var counter = 0;


function baseCir3(){
ctx3.beginPath();
ctx3.lineWidth = width/14;
ctx3.strokeStyle ="#e2e2e2";
ctx3.arc(width/2 ,width/2, width/3, 0, Math.PI*2);
ctx3.stroke();
ctx3.closePath();
}
setTimeout(function draw(){
var angle = Math.PI*1.5 + Math.PI *2* counter /100;
ctx3.clearRect(0,0,width,height);
baseCir3();
ctx3.beginPath();
ctx3.lineWidth = width/14;
ctx3.arc(width/2 ,width/2 ,width/3,1.5*Math.PI ,angle);
ctx3.strokeStyle = color;
ctx3.stroke();
ctx3.closePath();

ctx3.fillStyle = color;
ctx3.font = width/6 + "px Arial";
ctx3.textAlign = 'center';
ctx3.textBaseline = 'middle';
// ctx.fillText( percent3 + "", width / 2, width / 2 );
ctx3.transform = "rotate(90deg)";
ctx3.fillText(status ,width/2, height -25);
counter++;
if (counter <= percent3) {
setTimeout(draw ,20);
}
},200);



я хочу сделать через новый объект но когда я пишу так оно не работает, в чем может быть проблема?

window.onload = function(){
var newprogrs = new venhrun({
clas_progressbar: 'canvas',
});
}

function venhrun(v) {

this.canvas = document.getElementById(v.clas_progressbar);
this.ctx = canvas.getContext('2d');

this.canvas.height = /*width*/ 100;
this.percent = 9.5;
this.percent2 = this.percent *10;
var counter = 0;
var color = '#2af';
var width = /*canvas.width*/ 100;
var height = /*canvas.height*/ 100;



var new_ctx = this.ctx;
var new_percent2 = this.percent2;

this.baseCir = function (){
new_ctx.beginPath();
new_ctx.lineWidth = width/14;
new_ctx.strokeStyle ="#e2e2e2";
new_ctx.arc(width/2 ,width/2, width/3, 0, Math.PI*2);
new_ctx.stroke();
new_ctx.closePath();
}



setTimeout(function draw(){
this.angle = Math.PI*1.5 + Math.PI *2* counter /100;
new_ctx.clearRect(0,0,width,height);
baseCir();
new_ctx.beginPath();
new_ctx.lineWidth = width/14;
new_ctx.arc(width/2 ,width/2 ,width/3,1.5*Math.PI ,this.angle);
new_ctx.strokeStyle = color;
new_ctx.stroke();
new_ctx.closePath();



new_ctx.fillStyle = color;
new_ctx.font = width/6 + "px Arial";
new_ctx.textAlign = 'center';
new_ctx.textBaseline = 'middle';
// ctx.fillText( percent + "", width / 2, width / 2 );
new_ctx.transform = "rotate(90deg)";
new_ctx.fillText(status ,width/2, height -25);
counter++;
if (counter <= new_percent2) {
setTimeout(draw ,20);
}
},200);

}
Ответить с цитированием
  #2 (permalink)  
Старый 03.05.2018, 08:44
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Создавайте новый элемент canvas каждый раз.

this.canvas = document.createElement('canvas');
this.canvas.width = ...
this.canvas.height = ...
//...
document.body.appendChild(this.canvas);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Javascript: вопросы по ООП almac Общие вопросы Javascript 37 08.07.2012 23:03
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Component Object Model в JavaScript sionus Events/DOM/Window 1 04.02.2010 13:37