Как стать автором
Обновить

Windows Vista Sidebar как платформа для flash десктоп-приложений?

Время на прочтение4 мин
Количество просмотров563
Сейчас, вопрос о выборе платформы для десктоп-приложений (в частности flash/flex-приложений) стоит достаточно остро. Adobe выпустил для этого Apollo, с учетом того что рано или поздно все flash/flex-разработчики, свои десктоп-приложения будут портировать на него. Если честно, я с этим согласен.

Но неожиданно, у меня возник вопрос – а нельзя ли в качестве платформы использовать Windows Vista, в частности ее новый компонент Sidebar и пользоваться всей ее мощью. А платформа Sidebar-а действительно мощная, с огромным количеством функций и возможностей.

flashearth.jpg



Vista Sidebar
В Vista появился новый элемент интерфейса, Sidebar, на котором после установки по умолчанию располагаются часы, слайд-шоу и новости. Основное назначение Sidebar – быстрая навигация при выполнении типовых задач и управление информационными потоками, консолидация и получение необходимых итоговых данных. На панель Sidebar можно добавлять любые другие web-приложения, или гаджеты; можно настраивать Sidebar, меняя его расположение относительно сторон экрана; при использовании нескольких мониторов можно указать конкретный монитор, на котором следует выводить Sidebar.

Возникло сразу несколько вопросов:

Сложность реализации.
Вопрос отпадает, так как все чрезвычайно просто. Так гаджеты для Sidebar – это не что иное, как обычный архив с обычным html и JavaScript и некоторым набором специфических файлов. Правда, JavaScript несколько расширен, т.е. имеет функции для взаимодействия с операционной системой.
Так что внедрять swf-файлы, так же просто, как добавлять их в обычную html-страницу.Обращать к JavaScript функциям просто – через ExternalInterfaces

Если у пользователя не стоит Flash Player, то можно делать обычный ExpressInstall.

Вопрос распространения.
Этот вопрос посложнее. Windows Vista еще не имеет большой популярности у пользователей. Рано или поздно, большая часть, конечно, перейдет с XP на Vista, но это вопрос спорный и не относится к тематике этой статьи. Данная статья – это просто демонстрация принципа использования Vista Sidebar как платформы.

У Apollo вопрос распространения, является безусловным преимуществом. Но это все лирика. Можно просто задуматься о создании десктоп-приложений специально для Windows Vista, так как JavaScript, AJAX, не имеет столько возможностей как Flash или Flex. Но это опять-таки вопрос спорный.

Реализация.
В качестве примера, я сделал FlashEarch (движок http://www.flashearth.com/). Повторяю – это лишь демонстрация принципа.

Гаджет для Sidebar – это обчный архив с расширением .gadget
Одним из главных компонентов гаджета это xml-файл со всеми описаниями. Например:

<?xml version="1.0" encoding="utf-8" ?>
<gadget>
<name>Flash Earth</name>
<namespace>shaggysmile.com</namespace>
<version>1.0</version>
<author name="SHAGGYSMILE">
<info url="http://lifeflash.shaggysmile.com" />
</author>
<copyright>2007</copyright>
<description>Flash and Windows Vista Sidebar</description>
<icons>
<icon src="icon.png" mce_src="icon.png" />
</icons>
<hosts>
<host name="sidebar">
<base type="HTML" apiVersion="1.0.0" src="index.html" mce_src="index.html" />
<permissions>full</permissions>
<platform minPlatformVersion="0.3" />
</host>
</hosts>
</gadget>


Не имеет смысла описывать, что здесь и как, так как все наглядно видно. Если возникают вопросы, смотрите исходник или читайте документацию.

Далее все просто. Все зависит от ваших знаний JavaScript и ActionScript. Если вы хотите использовать системные функции, то основным ядром – будет именно JavaScript. Сам swf-файл это лишь визуальное отображение. Данные в swf передаются через ExternalInterfaces.

Например, функция, которая возвращает процентную загруженность ОЗУ

Flash:

import flash.external.*;
Stage.scaleMode = 'noscale';
Stage.align = 'tl'; var isAvailable:Boolean = ExternalInterface.available;
function getMemoryPercentageSize() {
var memoryPercentSize = Number(String(ExternalInterface.call("getMemoryPercentageSize")));
debug_txt.text = Math.floor(memoryPercentSize)+"%";
}
onEnterFrame = getMemoryPercentageSize;


JavaScript:

function getMemoryPercentageSize()
{
var oMachine = new machineStatus();
return oMachine.memoryPercentage;
}
function machineStatus()
{
this.CPUCount = System.Machine.CPUs.count;var usageTotal = 0;
for (var i = 0; i < this.CPUCount; i++) {

usageTotal += System.Machine.CPUs.item(i).usagePercentage;this.CPUUsagePercentage = Math.min(Math.max(0, usageTotal / this.CPUCount), 100);
this.totalMemory = System.Machine.totalMemory;
this.availableMemory = System.Machine.availableMemory;if((this.totalMemory > 0) && (this.totalMemory > this.availableMemory))
{
this.memoryPercentage = Math.min(100 - (this.availableMemory / this.totalMemory * 100), 100);
}
else
{
this.memoryPercentage = 0;
}
}


Как видите все достаточно несложно. Все упирается, лишь в ваши знания JavaScript.
Это самый элементарный пример. В принципе, если вам не нужны все возможности Vista Sidebar и вы хотите использовать его лишь как контейнер для flash-приложений, то JavaScript вам и не нужен. Слишком долго и скучно писать про все. Основные принципы я уже описал. Остальное – это чтение документации и просмотр исходников. В исходнике два swf-файла. Первый — это просто Flash Earth, второй это отображение текущей загружености ОЗУ.
На этом все.

Исходники
Теги:
Хабы:
Всего голосов 7: ↑7 и ↓0+7
Комментарии11

Публикации

Ближайшие события