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

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

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

Регистрация: Jan 2011
Сообщений: 9
По умолчанию Flex + AS3 + MVC

Всем привет.
У меня такой вопрос - как ПРАВИЛЬНО связывать mxml и as-код?

Решил порабоать с Flex, создал в FlexBuilder проект. В визуальном редакторе накидал компонентов, затем в mxml в теге
Код AS3:
<mx:Script>
написал несколько функций - в некоторых идет работа с компонентами (например изменение бэкграунда).
И вот, количество строк кода приблизилось к 300 и задался я вопросом - "а как отделить as-код от mxml?"

Вариант 1: Директива
Код AS3:
#include
- в as3 не рекомендуется;

Вариант 2:
Код AS3:
<mx:Script source="myscript.as">
- простой перенос функций в as-файл - все работает, НО - этот as не проверяется средой на ошибки и я не могу просматривать свойства компонентов созданных в mxml.

Вариант 3: Создать as-класс, импортировать его в mxml, затем создать объект и работать с методами созданного объекта. Проблема - придется передавать ссылки на каждый компонент из mxlm в as-класс.

Какие еще варианты возможны?

Старый 01.03.2011, 16:24
zorexundra вне форума Посмотреть профиль Отправить личное сообщение для zorexundra Найти все сообщения от zorexundra
  № 2  
Ответить с цитированием
zorexundra

Регистрация: Dec 2010
Сообщений: 177
Цитата:
Сообщение от Unit81 Посмотреть сообщение
Вариант 1: Директива
Код AS3:
#include
- в as3 не рекомендуется;
Не то, чтобы не рекомендуется, но заменено на директиву include.
В среде Flash Builder 4 такая связь отслеживается. Работает подсветка методов и свойств mxml-объектов. По крайней мере тех, которые расположены в mxml-файле с данной директивой.


Последний раз редактировалось zorexundra; 01.03.2011 в 16:28.
Старый 01.03.2011, 16:31
Unit81 вне форума Посмотреть профиль Отправить личное сообщение для Unit81 Найти все сообщения от Unit81
  № 3  
Ответить с цитированием
Unit81
 
Аватар для Unit81

Регистрация: Jan 2011
Сообщений: 9
Хм... надо поковырять этот вариант =) Спасибо!

Старый 01.03.2011, 17:01
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
http://www.flasher.ru/forum/showpost...42&postcount=4

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

Регистрация: Jan 2011
Сообщений: 9
Цитата:
Сообщение от alatar Посмотреть сообщение
Пробовал вчера нечто подобное (пытался отнаследовать as от mxml) но чета не получилось (поздо было, спать хотел ).
Надо еще раз попробовать...

И еще такой нюанс - создаю именно flex-проект, в котором изначально есть только один mxml-файл, а тут говорится о базовом as-классе

Цитата:
Способ 1. Создается базовый as класс (например MyComponentBase.as), который наследуется от класса, который вы бы использовали как базовый для mxml-компонента. mxml-компонент (MyComponent.mxml), в свою очередь, создается на базе MyComponent.as. В mxml-компоненте расставляются необходимые контролы. Все контролы, которые используются в коде, должны иметь id. В базовом классе (MyComponentBase.as) для этих контролов создаются публичные переменные соответсвующего типа. Весь код пишется в myComponentBase.as.
Это значит, что проект должен быть AS? Или я чего-то не понял?


Последний раз редактировалось Unit81; 01.03.2011 в 17:36. Причина: доосмыслил
Старый 01.03.2011, 17:34
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
пытался отнаследовать as от mxml
Внимательнее читайте и все получится. Надо не as наследовать от mxml, а mxml наследовать от as.

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

Регистрация: Jan 2011
Сообщений: 9
Цитата:
Сообщение от alatar Посмотреть сообщение
Внимательнее читайте и все получится. Надо не as наследовать от mxml, а mxml наследовать от as.
Не, Вашу мысль я понял (пытался-то я вчера ) ну и соответственно сейчас пытаюсь ее спроецировать на свою ситуацию...

Цитата:
И еще такой нюанс - создаю именно flex-проект, в котором изначально есть только один mxml-файл, а тут говорится о базовом as-классе

Цитата:
Способ 1. Создается базовый as класс (например MyComponentBase.as), который наследуется от класса, который вы бы использовали как базовый для mxml-компонента. mxml-компонент (MyComponent.mxml), в свою очередь, создается на базе MyComponent.as. В mxml-компоненте расставляются необходимые контролы. Все контролы, которые используются в коде, должны иметь id. В базовом классе (MyComponentBase.as) для этих контролов создаются публичные переменные соответсвующего типа. Весь код пишется в myComponentBase.as.
Это значит, что проект должен быть AS?

Старый 01.03.2011, 18:04
Johny_86 вне форума Посмотреть профиль Отправить личное сообщение для Johny_86 Найти все сообщения от Johny_86
  № 8  
Ответить с цитированием
Johny_86

Регистрация: Feb 2011
Сообщений: 11
Пример использования: я по нему разобрался и сделал свою прогу уже как надо:
1. Создаём флекс-проект, называем его: FlexCodeBehind.
2. В папке src создаем папку app.
3. В папке app (это будет пакет наш) создаём файл MyClass, который будет наслед. от application, чтобы потом mxml наследовался от этого нашего MyClass.
в итоге у тебя 2 файла: FlexCodeBehind.mxml и MyClass.as

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<app:MyClass
	xmlns:app="app.*"
	xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute"
	initialize="myButtonClick(event)">
	<mx:Button x="262" y="228" label="Button"
	 click="myButtonClick(event)"/>
 
</app:MyClass>
Код AS3:
// ActionScript file
package app {
 
	import flash.events.MouseEvent;
	import mx.controls.Alert;
	import mx.core.Application;
	import flash.events.Event;
 
	public class MyClass extends Application {
 
 
 
		public function myButtonClick(e:Event):void {
			Alert.show("Hello from button click in code behind");
		}
	}
}
Если у тебя в mxml есть кнопка допустим с id="btn", то тебе в AS-файле нужно завести public var btn:Button. тогда ты сможешь управлять из AS-кода.

Добавлено через 1 минуту
В этом коде Алерт появляется при инициализации, а так же по клику мышки.

Старый 01.03.2011, 18:10
Unit81 вне форума Посмотреть профиль Отправить личное сообщение для Unit81 Найти все сообщения от Unit81
  № 9  
Ответить с цитированием
Unit81
 
Аватар для Unit81

Регистрация: Jan 2011
Сообщений: 9
О, класс, как-раз этого не хватало, наглядно-просто-понятно Спасибо!

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

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

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


 


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


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