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

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

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

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
По умолчанию Библиотека ресурсов при помощи mxmlc

Создаю библиотеку ресурсов (картинки, шрифты и т.д.) при помощи as-файла и компилятора mxmlc, а не при помощи fla-файла. При компиляции swf, в него попадают не нужные мне классы из пакета mx.core. Есть ли какая то возможность сделать так, что бы они в библиотеку не попадали?

Образец класса библиотеки:
Код AS3:
package {
import flash.display.Sprite;
 
public class Main extends Sprite
{
    [Embed(source = '../bin/img1.png')] private static const Image1:Class;
    [Embed(source = '../bin/img2.png')] private static const Image2:Class;
    [Embed(source = '../bin/img3.png')] private static const Image3:Class;
    [Embed(source = '../bin/img4.png')] private static const Image4:Class;
 
    public function Main():void
    {
    }
}
}

Старый 12.04.2011, 20:35
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 2  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Есть, но для каждого ресурса нужно создать отдельный класс, типа
Код AS3:
package  
{
	import flash.display.Bitmap;
 
	[Embed(source='../lib/image.png')]
	public class image1 extends Bitmap 
	{
		public function image1() {
			super();
		}
	}
 
}

Старый 13.04.2011, 00:06
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 3  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
что то данный код не компилится... пишет Error: A file found in a source-path 'Main' must have the same name as the class definition inside the file 'Img'.
Если же сделать так:
Код AS3:
package {
import flash.display.Bitmap;
import flash.display.Sprite;
 
public class Main extends Sprite
{
    [Embed(source='../lib/image.png')]
    public class image1 extends Bitmap
    {
        public function image1() {
            super();
        }
    }
    public function Main()
    {
    }
}
}
то выдает Error: Classes must not be nested.

Старый 13.04.2011, 00:22
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Пример f.g.programmer правильный, просто вы не правильно говорите компилятору, где находятся ваши файлы (либо вам нужно правильно указать classpath (параметр -cp) либо вы как-то не-так файл назвали.
__________________
Hell is the possibility of sanity

Старый 13.04.2011, 00:49
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 5  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
Все может быть и даже не может быть, а так и есть.
Как я делаю...
Создаю as3 проект во FlashDevelop и в классе Main "эмбедю" картинки (ПКМ по картинке -> Insert Into Document) и далее пишу как у f.g.programmer...
Если не жалко времени (аль еще чего) скиньте архивчик с тестовым проектиком. Может покопавшись в нем найду свою ошибку.

Кажется сам разобрался... я так понимаю что для каждой картинки надо создавать отдельный as-файл?


Последний раз редактировалось Aloran; 13.04.2011 в 00:53.
Старый 13.04.2011, 01:05
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 6  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Да, чтобы мой пример работал, нужно поместить код в файл image1.as и разместить его в корневом пакете.
Генерировать такие классы можно автоматически.

Старый 13.04.2011, 09:57
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 7  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
А подскажи, каким образом ты их так генерируешь?

Старый 13.04.2011, 20:40
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 8  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Это можно делать практически на любом языке, принцип такой:
1. готовится минимальный шаблон, например
Код:
package { import flash.display.Bitmap; [Embed(source='(PATH)')] public class (NAME) extends Bitmap {} }
2. формируется список имя => путь с ресурсами, например
("image1" => "e:/image1.jpg", "image2" => "e:/image2.jpg")
3. генерируются as файлы подстановкой в шаблон имени и пути
4. генерируется ещё один класс, который импортирует все сформированные классы, и компилируется

Старый 15.04.2011, 19:14
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 9  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
В итоге решили, что наличие классов из пакета mx.core, не критично и лучше обойтись без создания лишних файлов...
Но тут есть еще один недостаток: при компиляции к именам классов добавляет имя основного класса. Т.е. если смотреть на пример из первого поста, то в итоге, в либе, получаем классы Main_Image1, Main_Image и т.д. Как это побороть?

Старый 15.04.2011, 19:24
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 10  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Скорее всего никак, но ничто не может помешать вам удалить лишние файлы после сборки библиотеки также автоматически.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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