Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [JS] Динамическое создание элемента canvas 
V
    Опции темы
AttentiONlll
Дата 29.3.2011, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 17.12.2008

Репутация: нет
Всего: нет



Здравствуйте!
При нажатии на кнопку требуется, чтобы создавался новый динамический объект canvas (для выбора цвета в графическом редакторе). Он должен создаваться поверх нижней канвы (предназначена, собственно, для рисования на ней).
Привожу код, но он работает не корректно - динамический канвас не создается. Помогите, пожалуйста, исправить ошибку.
Так же, при щелчке по нижней канве динамический объект должен исчезнуть. Подскажите, как это можно реализовать?
Заранее спасибо.

Код

//инициализация канвы, на которой происходит рисование
<canvas id="canvas"></canvas>
<script type="text/javascript">
        Canva.init('canvas', 1000, 270);
</script>
<form>
<input type="button" value="Foreground" name="ForegroundTool" onclick="Palette()">
</form>


Код

/***********************************************************************
 *                 канва, на которой происходит рисование       *
 **********************************************************************/
var Canva = {};
 
Canva.init = function(id, width, height)
{
        var canv = document.getElementById(id);
 
        this.selectedForegroundColor = 'white';
 
        canv.width = width;
        canv.height = height;
     
        this.canvasId = id;
        
        this.ctx = canv.getContext("2d");
        
        this.selectedColor = '#000000';
        this.selectedFillColor = '#FFFFFF';
        this.selectedWidth = 1;
        this.selectedOpacity = 1;
 
        this.tool = Pencil;
        this.drawing = false;
        
        canv.onmousedown = function(e)
        {
                var evnt = ie_event(e);
                Canva.tool.start(evnt);
        };
        
        canv.onmouseup = function(e)
        {
                if (Canva.drawing)
                {
                        var evnt = ie_event(e);
                        Canva.tool.finish(evnt);
                }
        };
        
        canv.onmousemove = function(e)
        {
                if (Canva.drawing)
                {
                        var evnt = ie_event(e);
                        Canva.tool.move(evnt);
                }
                document.getElementById(Canva.canvasId).style.cursor = 'crosshair';
        };
};
/**********************************************************************
 *           Palette     здесь должен создаться динамический канвас, а на нем появиться круг, залитый градиентом                                               * 
 *********************************************************************/
function Palette()
{
var offsetx, offsety, radius = 90,
count = 1080, oneDivCount = 1/count, countDiv360 = count/360, degreesToRadians = Math.PI/180,
i, angle, angle_cos, angle_sin;
 
var canvas = document.createElement("canvas"); //создаю динамический элемент
canvas.width = 250;
canvas.height = 250;
 
offsetx = canvas.width / 2;
offsety = canvas.height / 2;
 
var context = canvas.getContext("2d");
context.lineWidth = 1;
 
for(i = 0; i < count; i++)
{
angle = i / countDiv360 * degreesToRadians;
angle_cos = Math.cos(angle);
angle_sin = Math.sin(angle);
 
context.strokeStyle = "hsl(" + Math.floor( (i * oneDivCount) * 360 ) + ", 100%, 50%)";
context.beginPath();
context.moveTo(angle_cos + offsetx, angle_sin + offsety);
context.lineTo(angle_cos * radius + offsetx, angle_sin * radius + offsety);
context.stroke();
}
 
var gradient = context.createRadialGradient(offsetx, offsetx, 0, offsetx, offsetx, radius);
gradient.addColorStop(0, 'rgba(255, 255, 255, 1)');
gradient.addColorStop(1, 'rgba(255, 255, 255, 0)');
 
context.fillStyle = gradient;
context.fillRect(0, 0, canvas.width, canvas.height);
appendChild(canvas); //??????? скорее всего ошибка связана с этим
return canvas;
}



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.