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

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

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

Регистрация: Jun 2010
Адрес: г. Майкоп, р. Адыгея
Сообщений: 27
По умолчанию Хранение PNG/GIF в SWF и их загрузка

1) Подскажите, как правильно импортировать PNG/GIF в SWF, а потом загрузить, чтобы эту картинку можно было потом использовать в качестве курсора: CursorManager.setCursor( ) ?
2) "Правильно" имеется ввиду - хранить в виде MovieClip или Bitmap?

Вариант типа:
Код AS3:
[Embed(source=" ", symbol=" ")]
private var Cursor :Class;
не подходит.

Мне нужно сделать именно загрузку картинки.
У меня есть вот такой код:
Код AS3:
public var Loader_KDSLib :Loader;
public var CursorClass :Class;
...
var URL_KDSLib :URLRequest = new URLRequest( KDSLibSource );
Loader_KDSLib = new Loader();
Loader_KDSLib.load( URL_KDSLib );
Loader_KDSLib.contentLoaderInfo.addEventListener( Event.INIT, KDSLibINIT );
...
private function KDSLibINIT(event: Event):void{
CursorClass = Loader_KDSLib.contentLoaderInfo.applicationDomain.getDefinition("CursorArrowUpDoun") as Class;
}
...
CursorManager.setCursor( CursorClass ); //НА ЭТОЙ СТРОКЕ ОШИБКА:
//ArgumentError: Error #1063: Несоответствие количества аргументов в CursorArrowUpDoun(). Ожидалось 2, получено 0.

Старый 29.08.2010, 20:45
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
CursorManager.setCursor( CursorClass(0, 0) )
Только что-то мне подсказывает, что надо вот так:
Код AS3:
CursorManager.setCursor( new CursorClass(0, 0) )
что за (0, 0) - сам не в курсе, но важная штука. Причем ни на что не влияет, какие угодно числа ни подставляй.
__________________
тут я

Старый 29.08.2010, 23:51
Bratus вне форума Посмотреть профиль Найти все сообщения от Bratus
  № 3  
Ответить с цитированием
Bratus
 
Аватар для Bratus

Регистрация: Jun 2010
Адрес: г. Майкоп, р. Адыгея
Сообщений: 27
Ничего не получается ...
Пробовал так:
Код AS3:
var CursorClass :Class = KDSCore.Loader_KDSLib.contentLoaderInfo.applicationDomain.getDefinition("ImgCursor") as Class;
CursorManager.setCursor( new CursorClass(0,0 ) );
//TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать ImgCursor@d034b81 в Class.
Немного поэкспериментировав, выяснил, что если сделать так:
Код AS3:
[Embed(source="../resource/KDSLib.swf", symbol="ImgCursor")]
private var Cursor :Class;
...
CursorManager.setCursor( Cursor );
то все работает. Но мне [Embed ...] не подходит, мне нужно загружать ...
А если сделать так, то ошибка:
Код AS3:
[Embed(source="../resource/KDSLib.swf", symbol="ImgCursor")]
private var Cursor :Class;
...
var CursorClass3 :* = new Cursor();
CursorManager.setCursor( CursorClass3 );
//TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать kds_cmpts::CRoadHitArea_Cursor@d36e4c1 в Class.
Ошибка такая же как и в первом случае...

Как можно обойти все эти ошибки?

P.S.
Цитата:
Сообщение от КорДум Посмотреть сообщение
что за (0, 0) - сам не в курсе, но важная штука. Причем ни на что не влияет, какие угодно числа ни подставляй.
Как оказалось, после небольших исследований, в данном случае CursorClass - это экземплят класса BitmapData. А теперь, КорДум, посмотри на конструктор BitmapData ...

Старый 30.08.2010, 00:47
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Ну что ж вы текст ошибки то прочитать не можете
Код AS3:
CursorManager.setCursor(CursorClass)

Старый 30.08.2010, 10:00
Bratus вне форума Посмотреть профиль Найти все сообщения от Bratus
  № 5  
Ответить с цитированием
Bratus
 
Аватар для Bratus

Регистрация: Jun 2010
Адрес: г. Майкоп, р. Адыгея
Сообщений: 27
Цитата:
Сообщение от fljot Посмотреть сообщение
Ну что ж вы текст ошибки то прочитать не можете
Не понял к чему это ? ...
Если вы не видите в этом вопросе проблемы, то может покажете как можно загрузить из SWF PNG/GIF и установить эту картинку в качастве курсора мыши ?

Старый 30.08.2010, 11:42
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Криво там сделано - setCursor хочет класс (вот зачем ему блин класс?) в качестве параметра, но передать этому классу пару параметров, если этот класс экстендит битмапДата ему слабо. Т.е. PNG/GIF ему напрямую не передать.
Вот хак предлагают для этого
http://stackoverflow.com/questions/4...ass-at-runtime
идею хака и код поконкретнее писать сейчас времени нет, может позже, если не разберётесь.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 30.08.2010, 15:48
Bratus вне форума Посмотреть профиль Найти все сообщения от Bratus
  № 7  
Ответить с цитированием
Bratus
 
Аватар для Bratus

Регистрация: Jun 2010
Адрес: г. Майкоп, р. Адыгея
Сообщений: 27
Цитата:
Сообщение от -De- Посмотреть сообщение
Вот хак предлагают для этого
http://stackoverflow.com/questions/4...ass-at-runtime
Спасибо за ссылку! Очень полезный пример! Идею хака понял. По-моему там автор немного перемудрил...
Вот переделал под свою задачу, если кому интересно:

Код AS3:
package kds_cmpts{
import flash.display.Bitmap;
 
public class CLoadedCursorImg extends Bitmap{
	public static var CursorData :Object;
 
	public function CLoadedCursorImg(){
		super( new CursorData(0,0) );
	}
}
}
...
//ГДЕ-ТО ВНУТРИ ПРИЛОЖЕНИЯ:
CLoadedCursorImg.CursorData =
	KDSCore.Loader_KDSLib.contentLoaderInfo.applicationDomain.getDefinition("CursorArrowLeftRight");
CursorManager.setCursor( CLoadedCursorImg );
//KDSCore - ЭТО КЛАСС В КОТОРОМ РЕАЛИЗОВАНА ЗАГРУЗКА SWF С РЕСУРСАМИ
//Loader_KDSLib - ЭКЗЕМПЛЯР Loader, КОТОРЫЙ ОБЫКНОВЕННЫМ СПОСОБОМ ЗАГРУЖАЕТ SWF:
Loader_KDSLib = new Loader();
Loader_KDSLib.load( "resource/KDSLib.swf" );
//И ВСЁ! БОЛЬШЕ НИЧЕГО ИНТЕРЕСНОГО В КЛАССЕ KDSCore НЕТ!
Вроде нормально получилось. Кода не много и почему-то работает ...

Старый 30.08.2010, 20:10
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
А теперь, КорДум, посмотри на конструктор BitmapData ...
я в курсе.
__________________
тут я

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

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

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


 


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


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