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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Графика в FireFox 1.1, изумляемся и мечтаем :) 
:(
    Опции темы
Sardar
Дата 1.8.2005, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Проект FireFox очень быстро развиваеться, просто ошеломляя результатами smile

Обещают новый HTML элемент <canvas> который представляет некий квадратный регион на страничке, как встраиваемый обьект типа апплета или картинки. Внутри этого региона можно отрисовать что угодно, в зависимости от "движка"(контекста).

Читаем: http://developer.mozilla.org/en/docs/Drawi...ics_with_Canvas

И так что это нам даёт? Как минимум рисование графиков на клиенте smile Если это всё будет ещё быстро работать, то можно делать "флешевые анимации" используя движок браузера. В будущем обещают 3D контекст, с помощью которого можно отрисовать трёхмерные сцены. Какое яркое и светлое однако будущее! smile

Посмотрев на примеры увидим что будущий 2D контекст это примитивная штука. Есть поверхность, используя встроенные методы типа fillRect рисуем примитивы. Xолст можно вращать, передвигать и т.д. Но нарисованные примитивы не являються обьектами, если мне нужно сдвинуть квадратик, то его скорее всего нужно затереть и нарисовать по новой. Плюсы подхода - не замороченный интерфейс и очень быстрая работа.

А что если пойти дальше smile
Представим новый контекст 2D objects, позволяющий создавать примитивы и помещать их в регионы(конверты) в точности как мы это делаем сейчас с деревом документа. Делая анимацию мы сдвигаем слой, а не создаём новый на новом месте, JavaScript(DHTML) way smile

Код
//<canvas id="canvas_id" width="300" height="300"></canvas>
var canvas=document.getElementById("canvas_id");
var ctx=canvas.getContext("2D objects"); //наш выдуманный контекст =)

//используя factory методы контекста, прямо как в DOM, создаём примитивы
//но примитив это не сложная вещь как HTML элемент, он не может вдруг стать
//кругом и внутрь него дельзя положить другой примитив
//визуальные свойства:
//  ширинa/высотa; координаты относительно текущего региона; цвет/паттерн заливки
//  видимость(отключает отрисовку); бордер рисуеться отдельным примитивом, ибо сюда
// нужны отдельные стили и прочая головная боль, хотя не помешали бы стандартные варианты...

var r=ctx.createRectangle(60, 50); //можно задавать свойства при создании
with(r) { //а можно в любой момент из скрипта
  fillStyle="rgb(200,0,0)"; //можно задать URL картинки + координаты сдвига
  visibility=true;
  positionX=10;
  positionY=10;
}

//любой примитив отображаеться в определённом регионе, назовём это холстом
//или прозрачным div'ом на абсолютной позиции в HTML
//дефолтовый регион во весь канвас. Регионы удобны что бы компоновать примитивы,
//перемещать/скрывать их группой и для оптимизации рендеринга
//регионы могут вкладываться друг в друга, именно так собираеться дерево сцены
//проще всего видеть регион как отддельный canvas или конверт, куда ложим примитивы
//в конструкторе координаты относительно родительского региона и размеры
//визуальные  свойства: размеры, координаты относительно родительского региона, видимость

var reg=ctx.createRegion(0, 0, 200, 200);
reg.add(r);
ctx.getDefaultRegion().add(reg);

ctx.requestPaint(); //обычно всё отрисовываеться вместе с изменениями, как в HTML
//но обычно отрисовка выполняеться в момент простоя скрипта
//вызов requestPaint() останавливает исполнение и быстренько всё рисует, выполнение
//возобновляеться когда всё полностью отрисуеться, тем самым мы точно определяем когда и что рисовать(кадры)

//в этой точке имеем канвас 300х300, квадрат 60х50 сдвинутый на 10px вниз и
// 10px вправо от верхнего левого угла

reg.moveTo(10, 10); //сдвигаем канвас на 10px вниз/вправо, квадрат сдвигаеться вместе с регионом
r.moveTo(0, 0); //сдвигаем квадрат на позицию x:0, y:0 относительно своего региона,
//тем самым он становиться на своё прежнее место x:10, y:10

ctx.requestPaint(reg); //запросить отрисовать можно только специфичный регион, что, тем самым поднимая производительность.

//в этой точке по сравнению с предидущим кадром ничего не изменилось :)
//изменились координаты обьектов

reg.visibility=false; //скрыли регион, канвас теперь пуст


Как видим такой подход не на много увеличит затраты ресурсов(только памяти по сути), но поможет сделать рисование увлекательной и простой задачей smile

Если же приложению нужен полный контроль, то оно может взять контекст 2D и рисовать функциями не запрашивая "высокоуровнего обьектного интерфейса".


А вообще хочеться побольше документации и что бы ИЕ не подкачал со своей реализацией, благо Сафари фичу уже имеет. Осталось Опере либо умереть, либо идти в ногу со временем.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
diam
Дата 1.8.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Угу. Я только "ЗА". smile
Вообще, сейчас уже web-клиента можно сделать достаточно толстым (я имею в виду, что клиент будет ничуть не хуже, чем написанный на делфях, C++ или на чём-то подобном). Чем больше возможностей будет у клиента, тем "толще" его можно будет сделать. Тем лучше. smile

З.Ы. Еээх, когда же выйдут аллоды с клиентом-браузером smile (joke). ^)
PM MAIL   Вверх
Gregof
Дата 12.1.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Эмиль Эклунд написал эмулятор canvas для Internet Explorer. Небольшой скрипт при помощи VML реализует поддержку базовой функциональности canvas.
Прочитано тут http://browsing.ru/2006/01/06/ie-canvas/
Пробовал играться - играбельно smile

--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Black
Дата 12.1.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Sardar
если так сделают, то это очень хорошо.
Будем отрисовывать картинки на клиенте :-)

И пусть выключают поддержку графики в браузере, не поможет smile


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
z-END
Дата 12.1.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

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



Цитата(Black @ 12.1.2006, 17:33 Найти цитируемый пост)
И пусть выключают поддержку графики в браузере, не поможет

тогда будут отключать JavaScript=)
я кстати больше чем уверен, с введением такой фичи в опциях настроек появится отключение canvas ибо я уже представил какое количество банеров будет слеплено по этой + Request технологии...


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Гость_гость
Дата 15.1.2006, 15:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











если нельзя будет отключать банеры, то будет очень плохо, в первую очередь тем кто платит деньги за траффик... smile
  Вверх
Black
Дата 16.1.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



z-END
Цитата(z-END @ 12.1.2006, 17:50 Найти цитируемый пост)

тогда будут отключать JavaScript=)


ну, это вряд ли

Цитата(z-END @ 12.1.2006, 17:50 Найти цитируемый пост)

в опциях настроек появится отключение canvas


скорее всего именно так и сделают



--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
pythonwin
Дата 27.9.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

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



Цитата(Sardar @  1.8.2005,  08:57 Найти цитируемый пост)


Читаем: http://developer.mozilla.org/en/docs/Drawi...ics_with_Canvas


Код

<html>
 <head>
  <script type="application/x-javascript">
function draw() {
 var canvas = document.getElementById("canvas");
 var ctx = canvas.getContext("2d");
 ctx.fillStyle = "rgb(200,0,0)";
 ctx.fillRect (10, 10, 55, 50);
 ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
 ctx.fillRect (30, 30, 55, 50);
}
  </script>
 </head>
 <body onload="draw()">
   <canvas id="canvas" width="300" height="300"></canvas>
 </body>
</html>


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


 




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


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

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