Форум программистов, компьютерный форум, киберфорум
Flash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 6

Класс as3 как компонент приложения флекс

26.07.2012, 13:36. Показов 2733. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема следующая. Пишу игровой клиент и понятно что стандартные флекс компоненты не подходят для оформления поэтому вся графика будет делаться на as3. Уже достаточно долго копаюсь но не могу понять как мне вставить экземпляр класса as3 в mxml флекса чтоб этот экземпляр отображался. у меня на данный момент написано следующее:
XML
1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<Application xmlns="http://www.adobe.com/2006/mxml" xmlns:local="AwaClient.MainView.*">
<local:MainViewPort/>
</Application>
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
package AwaClient.MainView {
import flash.display.Sprite;
 
 
public class MainViewPort extends Sprite{
    public function MainViewPort() {
         var myshape:Sprite;
        myshape = new Sprite();
        myshape.graphics.lineStyle(3,0);
        myshape.graphics.drawRect(0,0,100,100);
 
        stage.addChild(myshape);
    }
прямоугольник понятное дело рисуется для отладочных целей. Но я не вижу его на сцене хотя добавляю как ребенка stage. В идеале прошу пример с простейшим классом и mxml. Или ссылку туда где написано как реализовать то что я пытаюсь сделать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.07.2012, 13:36
Ответы с готовыми решениями:

Как внутри приложения AS3 узнать, что оно закрывается?
Нужно в момент закрытия приложения работающего в flashPlayer как-то узнать, что пользователь закрывает окно. Подскажите, кто знает,...

Покажите мне чисто Flex'овый класс, которого должно не быть в AS3.0
У меня вопрос: если я использую FD с Flex SDK 4* (последний стабильный) но притом создаю AS3.0 проекты - доступны ли мне все классы,...

Как вывести на экран используя флекс боксы ?

9
 Аватар для Nuff
214 / 80 / 2
Регистрация: 31.05.2011
Сообщений: 258
30.07.2012, 11:20
Для того чтобы можно было использовать свои компоненты в mxml как стандартные нужно наследоваться от UIComponent. Про Sprite и MovieClip забудьте. Если же вам нужен контейнер, тогда наследуйтесь от Canvas (если внутри содержатся визуальные элементы) либо от Container (если внутри него не визуальные элементы). В принципе и все. Только ваш прямоугольник рисованный не будет отображаться в design mode, т.к. он отрисуется только лишь во время выполнения программы.
Пример:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.domain.flex
{
    import com.domain.flex.util.IModuleProgress;
    
    import mx.core.UIComponent;
 
    public final class GameModuleInfo extends UIComponent
    {
        private var _url:String;
        private var _progressScreen:IModuleProgress;
        
        public function set url(url:String):void
        {
            _url = url;
        }
        public function get url():String
        {
            return _url;
        }
        public function set progressScreen(renderer:IModuleProgress):void
        {
            _progressScreen = renderer;
        }
        public function get progressScreen():IModuleProgress
        {
            return _progressScreen;
        }
    }
}
Аргументы url и progressScreen задаются в mxml. Надеюсь все ясно, если что, задавайте вопросы, все поясню.
2
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 6
30.07.2012, 13:55  [ТС]
Благодарю. В вашем коде нет конструктора класса-так должно быть? Мне впринципе без разницы будет ли это как компонент или контейнер. Мне нужно пространство размером с всё приложение на котором я могу сам рисовать из своих классов. Обязательно нужны те геттеры и сеттеры что вы написали в примере? Я думаю что мне лучше будет наследоваться от Canvas. И пожалуйста дайте мне код mxml чтоб я понял как встраивать мой класс as3 в приложение. А на Canvas я смогу добавлять элементы наследованные от sprite?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
30.07.2012, 14:44
Даже если конструктор не указывается, он все равно есть. Писать его - хороший тон в программировании, соответственно не писать - плохой.
0
 Аватар для Nuff
214 / 80 / 2
Регистрация: 31.05.2011
Сообщений: 258
30.07.2012, 15:10
Цитата Сообщение от interface Посмотреть сообщение
В вашем коде нет конструктора класса-так должно быть?
Можно его явно не прописывать, если вы не хотите что-то добавить внутрь конструктора.
Цитата Сообщение от interface Посмотреть сообщение
Мне нужно пространство размером с всё приложение на котором я могу сам рисовать из своих классов.
Тут я не совсем вас понимаю. Поясните.
Цитата Сообщение от interface Посмотреть сообщение
Обязательно нужны те геттеры и сеттеры что вы написали в примере?
Нет, не обязательно. Лишь когда вам нужен будет свой аргумент для вашего компонента в mxml.
Цитата Сообщение от interface Посмотреть сообщение
И пожалуйста дайте мне код mxml чтоб я понял как встраивать мой класс as3 в приложение.
Вот так:
XML
1
2
3
4
5
6
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                  xmlns:myComponent="com.domain.flex.*">
 
<myComponent:GameModuleInfo id="module1" url="modules/Module1.swf" progressScreen="{episode1Screen}"/>
 
</mx:Application>
Цитата Сообщение от interface Посмотреть сообщение
А на Canvas я смогу добавлять элементы наследованные от sprite?
Нет, не сможете. Используйте класс UIComponent или классы расширяющие его. Только так. Собственно для чего вам использовать именно Sprite?


Цитата Сообщение от TanaTiX Посмотреть сообщение
Писать его - хороший тон в программировании, соответственно не писать - плохой.
Никакой смысловой нагрузки описание пустого конструктора в себе не несет, поэтому и нет его в данном случае. По поводу хорошего тона в программировании по поводу конструкторов - не встречал, но спасибо за критику)
1
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 6
30.07.2012, 15:53  [ТС]
Благодарю. Про то что конструктор можно не описывать знаю Но вдруг в конструкторе должны быть какие то особые действия чтоб запихать класс в приложение..
Спрайт мне просто привычен. Про пространство я имел ввиду что мне не нужны никакие стандартные компоненты-просто площадь для рисования. А события и поведение у этого Uicomponent насколько похожи на sprite ?
0
 Аватар для Nuff
214 / 80 / 2
Регистрация: 31.05.2011
Сообщений: 258
30.07.2012, 16:25
Цитата Сообщение от interface Посмотреть сообщение
А события и поведение у этого Uicomponent насколько похожи на sprite ?
Вот цепочка наследования: UIComponent -> FlexSprite -> Sprite -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object
А вообще советую вам читать офф. доки и вот сам UIComponent

З.Ы.: Не будете сами читать и разбираться в официальной документации (которая кстати у Adobe очень хорошая), ничего так и не поймете.
0
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 6
30.07.2012, 17:07  [ТС]
делаю так
XML
1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:my="AwaClient.MainView.*">
<my:MainViewPort id="myport"/>
</mx:Application>
----------
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package AwaClient.MainView{
import mx.core.UIComponent;
 
 
public class MainViewPort extends UIComponent{
 
    public function MainViewPort()
    {
        super();
        x=10;y = 10;
        width = 200;height = 200;
        this.graphics.lineStyle(1,0);
        this.graphics.drawRect(0,0,100,100);
    }
}
}
ноль реакции. Вроде и вызов родительского конструктора не забыл. И даже размеры выставил компоненту. Прямоугольника нету. Мож я неправильно пытаюсь рисовать?
0
 Аватар для Nuff
214 / 80 / 2
Регистрация: 31.05.2011
Сообщений: 258
30.07.2012, 18:29
1. Где нету прямоугольника? В swf или в режиме дизайнера?
2. Уверены что цвет контура не под цвет фона? (может он есть но его не видно, это если у вас фон черный)
3. this можно не использовать, без него тоже все будет работать
4. все функции что не возвращают значение помечаются как void
5. x, y, width, height - задавайте в mxml, а не в конструкторе компонента Вот так:
XML
1
<my:MainViewPort id="myport" x="10" y="10" width="200" height="200"/>
6. Название пэкаджей с маленькой буквы, все буквы маленькие
0
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 6
30.07.2012, 21:27  [ТС]
я в дизайнере вообще не делаю. имею ввиду режим выполнения. когда запускаю swf фон приложения белый. цвет прямоугольника чёрный-должно быть видно.
применение this обосновано удобством автодополнения кода в flashbuilder
названия пакетов насколько я знаю могут иметь названия в любом регистре букв.
ну а вообще код правильный как вы считаете? по логике в данном случае он должен работать?

Добавлено через 1 час 15 минут
вроде заработало в следующем варианте
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
               xmlns:mx="http://www.adobe.com/2006/mxml" minWidth="955" minHeight="600"
               xmlns:my="MainView.*" >
<my:MainViewPort id="myport"/>
</mx:Application>
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package MainView
{
    import mx.core.UIComponent;
    
    public class MainViewPort extends UIComponent
    {
        public function MainViewPort()
        {
            super();
            x=10;y = 10;
            width = 200;height = 200;
            this.graphics.lineStyle(1,0);
            this.graphics.drawRect(0,0,100,100);
        }
    }
}
благодарю за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2012, 21:27
Помогаю со студенческими работами здесь

как построить меню в адаптиве в колонку флекс-боксом?
при нажатии на бургер вылезает меню и я хочу,чтобы оно располагалось посередине экрана в колонку. Пробовал задать display: flex и...

Как преобразовать код консольного приложения в WinForm или Класс
Есть приложение для работы в сети написанное в консольном приложении. делает отправку и приём данных в непрерывном режиме. работает со...

Как заставить класс инициализироваться при создании приложения(ошибка Cant instantiate class)
Пишу онлайн библиотеку с возможностью переключения языков. Работает везде нормально кроме index.xhtml, когда вставляю туда &lt;f:view...

AS3, как остановить звук?
Добрый день, завис на одной проблемме. В основную флешку с помощью компонента UILoader подгружается swf файл с музыкой. При...

Как внедрить шрифт embed на as3?
без использования flex?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru