Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.08.2011, 16:44
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 1  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
Question Читалка FB2 для мультитач планшета

Суть такова. Прикупил планшет на Win7, но семерка не очень то и заточена под тач. В частности нормальной FB2 читалки, хотя бы не заточенной но увернно работающей, под тач нету впринципе. Флеш в связке с цинком неплохая платформа для написания своей такой читалки, а формат FB2 тот же самый XML. Однако есть свои сложности. Вот кусок XML

Код AS1/AS2:
<?xml version="1.0" encoding="Windows-1251"?>
<FictionBook>
<description>
	<title-info>
		<genre></genre>
		<author>
			<first-name>Piter</first-name>
			<middle-name></middle-name>
			<last-name>Uots</last-name>
		</author>
		<book-title>Ложная слепота</book-title>
	</title-info>
</description>
Суть в том, что узел, например, <author> совсем необязательно будет стоять вторым в блоке <title-info>. Таким образом обращение к имени автора по childNodes[1] не всегда будет правильным. А таких узлов там масса. Вот и вопрос, есть ли возможность в AS2 обращаться к узлу по его имени? Заранее спасибо.
Вот еще созрел вопрос. В том же FB2 есть возможность хранить изображение в бинарном виде, прямо в смом теле документа. Вот пример
Код AS1/AS2:
<binary content-type="image/jpeg" id="tolstoy_port.png">
/9j/4AAQSkZJRgABAgEAYABgAAD/7Qz8UGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAYAAA
AAEAAgBgAAAAAQACOEJJTQQNAAAAAAAEAAAAeDhCSU0D8wAAAAAACAAAAAAAAAAAOEJJTQQK
AAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAG
AAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAG
AAAAAAABOEJJTQP4AAAAAABwAAD    (Это очень большой бинарник обложки- сокращено)
2Q==</binary>
Есть ли возможность эти данные преобразовать в изображение? Если есть то как?


Последний раз редактировалось Mulin; 26.08.2011 в 16:51.
Старый 26.08.2011, 21:15
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 2  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
у вас отличная возможность начать изучать AS3
__________________
сайт, vk

Старый 26.08.2011, 21:31
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 3  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
Цитата:
Сообщение от olexandr Посмотреть сообщение
у вас отличная возможность начать изучать AS3
Возможность она имеется всегда, но хотелось бы все же по теме

Старый 26.08.2011, 21:42
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
по теме: а зачем вам ас2?
__________________
Отряд Котовскага

Старый 26.08.2011, 22:28
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 5  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
Цитата:
Сообщение от Котяра Посмотреть сообщение
по теме: а зачем вам ас2?
Ну раз уж вы тут все так хотите поофтопить, то ладно. Уговорили
AS2 знаю более менее, AS3 не знаю чуть менее чем полностью. Времени изучать нет вообще. Кодю на AS2 в перерывах работы. Но дело в том, что если и изучать для этого дела новый язык, то все же лучше для данной цели подойдет Си. Но как я написал времени у меня нету, да и хотелось бы реализации на AS2. Разделом же вроде не ошибся?
А теперь по теме. Вот совсем унылый пример XML
Код AS1/AS2:
<value>
	<value1>1</value1>
	<value2>2</value2>
	<value3>3</value3>
</value>
Выделить второй нод имя которому <value2> непроблема
Код AS1/AS2:
childNodes[0].firstChild
Но иногда XML может иметь вид
Код AS1/AS2:
<value>
	<value2>1</value2>
	<value3>2</value3>
	<value4>3</value4>
</value>
То есть начинается с <value2> и заканчиватеся <value4>. Но мне все равно нужно получать значение <value2>
Воспользовавшись старым кодом
Код AS1/AS2:
childNodes[0].firstChild
Я получу значение <value3>. Что разумеется.
В другом случае вообще может не быть никаких значений во всех валуях, или даже вовсе не быть самих валуев. Например так
Код AS1/AS2:
<value>
	//Пусто...
</value>
Или так
Код AS1/AS2:
<value>
	<value2>1</value2>
	...
	<value40>40</value40>
</value>
Но зато всегда известно имя <value n>. Вот я и хочу узнать можно ли каким либо образом обратиться к узлу по его имени а не по индексу? И прошу не предлагайте мне AS3, это не тот раздел. Здесь обсуждают AS2. Да я старый зануда


Последний раз редактировалось Mulin; 26.08.2011 в 22:31.
Старый 26.08.2011, 22:52
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Обходите всех чилдов и смотрите по имени нода ( я в своё время завел такой метод в XML)
Код AS1/AS2:
XMLNode.prototype.getChildByName = function(name:String):XMLNode {.. .}
Могу ошибаться, ибо ас2 уже совсем подзабыл.
Просто как преобразовать в ас2 бинарник в jpg я не представляю. В ас3 это делается влёгкую.
__________________
Отряд Котовскага

Старый 26.08.2011, 23:19
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 7  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
ну, собственно, о чем и речь была
те задачи, которые перед вами стоят легко решаются с помощью AS3
не вижу смысла выдумывать неизвестно что для устаревшего языка, тем более сомневаюсь, что это вообще возможно
__________________
сайт, vk

Старый 26.08.2011, 23:21
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 8  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
Цитата:
Сообщение от Котяра Посмотреть сообщение
Просто как преобразовать в ас2 бинарник в jpg я не представляю. В ас3 это делается влёгкую.
Скажу больше, это не бинарник, это base64, его еще нужно преобразовать в бинарник . Но вроде таблица преобразований есть на вики. Но я уже придумал как вытянуть изображение, разумеется после его преобразования в бинарник. Нужно потом этот бинарник сохранить цинком в любом месте с расширением соответствующим изображению (расширение в атрибутах узла указано), и потом его подгрузить во флешку. Понимаю, вариант ректальнейший, но as3 еще сложнее Но вы почти уговорили

Старый 26.08.2011, 23:21
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 9  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
вот еще.
по поводу обращения по имени - я когда то давно писал класс один для этого дела. если разберетесь как им пользоваться, то на здоровье:

Код AS1/AS2:
class XML2Array {
 
	static public var COMPLETE:Number = 0;
	static public var ERROR:Number = 1;
 
	private var onComplete:Function;
	private var onError:Function;
 
	private var xml:XML;
	private var sorting:Boolean;
 
	public function XML2Array($sorting:Boolean) {
		sorting = $sorting;
	}
 
	public function load(str:String) {
		var t:XML2Array = this;
 
		xml = new XML();
		xml.ignoreWhite = true;
		xml.onLoad = function(ok:Boolean):Void {
			if (ok) {
				if (this.status) {
					t.onError('Неправильный формат данных (' + this.status + ')');
				}else {
					t.onComplete(t.parseXML(this));
				}
			}else {
				t.onError('Файл не найден');
			}
		}
		xml.load(str);
	}
 
	public function convert(str:String) {
		xml = new XML(str);
		xml.ignoreWhite = true;
		if (xml.status) {
			onError('Неправильный формат данных (' + xml.status + ')');
		}else {
			onComplete(parseXML(xml));
		}
	}
 
	public function addEventListener(p_event:Number, p_function:Function):Void {
 
		switch (p_event) {
			case XML2Array.COMPLETE:
				this.onComplete = p_function;
				break;
			case XML2Array.ERROR:
				this.onError = p_function;
				break;
			default:
				break;
		}
 
	}
 
	private function parseXML(p_xml:XML):Array {
 
		var arr:Array = [];
 
		// parse attributes
		for (var p:String in p_xml.attributes) {
			arr[p] = p_xml.attributes[p];
		}
 
		// parse nodeValue
		var nv:String = p_xml.childNodes[0].nodeValue;
		if (nv != undefined && nv != null){
			arr.value = nv;
		}
 
		// parse childs
		var nameArr:Array = [];
		for (var i:Number = 0; i < p_xml.childNodes.length; i++ ) {
			nameArr.push(p_xml.childNodes[i].nodeName);
		}
		for (var i:Number = 0; i < p_xml.childNodes.length; i++ ) {
			if (p_xml.childNodes[i].nodeName != null) {
				if (isUnique(nameArr, p_xml.childNodes[i].nodeName)){
					arr[p_xml.childNodes[i].nodeName] = parseXML(p_xml.childNodes[i]);
				}else {
					if (arr[p_xml.childNodes[i].nodeName] == undefined) {
						arr[p_xml.childNodes[i].nodeName] = [];
					}
					var idArr:Array = parseXML(p_xml.childNodes[i]);
					// сортировка по id
					if (!sorting) { /*if (isNaN(idArr.id)){*/
						arr[p_xml.childNodes[i].nodeName].push(idArr);
					}else{
						arr[p_xml.childNodes[i].nodeName][Number(idArr.id)] = idArr;
					}
				}
			}
		}
		return arr;
 
	}
 
	private function isUnique(p_arr:Array, p_str:Object):Boolean {
		var c:Number = 0;
		for (var i:Number = 0; i < p_arr.length; i++ ) {
			if (p_arr[i].toString() == p_str.toString()) {
				c++;
				if (c > 1) {
					return false;
				};
			}
		}
		return (c == 1);
	}
}
__________________
сайт, vk

Старый 26.08.2011, 23:25
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 10  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
А вы вообще уверены что цинк делает приложения под Win7?
Ой что-то туплю. Показалось что имеется в виду Win Phone 7.
По идее Haali reader должен пойти там.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 26.08.2011 в 23:28.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:22.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.