Вход

Просмотр полной версии : как импортировать movieclip(swc) в flex project


Vishapakahr
18.11.2009, 16:55
Народ помогите пожалуйста , я хочу импортировать мовиклип из флеша в флекс . Делать это на Actionscript project е умею

например на флеше я создал movieclip с названием ellips , експортировал во ellips.swc
и импортировал в флекс , и написав такой код у меня появляется мовиклип .


package {
import flash.display.Sprite;
public class elipsner extends Sprite
{
public function elipsner()
{
var elips:MovieClip=new ellips();
addChild(elips);
}
}
}


хочу узнать аналогичный способ во flex project е , с помощью MXML и AS3 .

wvxvw
18.11.2009, 19:20
То, что вы написали, это в принципе и есть AS3 :)
Ну, по мелочам, нехорошо, например, классы должны начинаться с прописной, нужно обязательно вызывать super() в начале конструктора, крайне желательно указывать объект вызывающий метод.
Но это мелочи, в остальном все должно работать так же.
Если интересует MXML, вот вам 2 варианта:
http://livedocs.adobe.com/flex/3/html/help.html?content=embed_3.html
Офф мануал разработчика.
http://kb2.adobe.com/community/publishing/526/cpsid_52670.html
И как это можно немного оптимизировать :)

Vishapakahr
19.11.2009, 13:06
То, что вы написали, это в принципе и есть AS3 :)
Ну, по мелочам, нехорошо, например, классы должны начинаться с прописной, нужно обязательно вызывать super() в начале конструктора, крайне желательно указывать объект вызывающий метод.
Но это мелочи, в остальном все должно работать так же.
Если интересует MXML, вот вам 2 варианта:
http://livedocs.adobe.com/flex/3/html/help.html?content=embed_3.html
Офф мануал разработчика.
http://kb2.adobe.com/community/publishing/526/cpsid_52670.html
И как это можно немного оптимизировать :)

знаю что AS3 , просто случайно выбрал тагда AS1,2 , сейчас уже редактировал
и поставил AS3 .

я просто имел ввиду вот что


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.display.Sprite;
public function elipsner():void{
var elips=new ellips();
addChild(elips);
}
]]>
</mx:Script>
</mx:Application>



тоисть пишу тоже самое аналогичным способом во флекс проекте и у меня мови клип не появляется .

если попрошу немогли бы вы написать простой код в flex project е в котором просто появляется мовиклип ?

wvxvw
19.11.2009, 14:12
Когда вы говорите Flex - что вы имеете в виду?

AS3 - так вы уже написали.
AS3 + Flex framework - [Embed()] метатег для встраивания или скомпилируйте SWC и используйте класс от туда. + Читайте следующий пункт.
MXML + Flex framework - используйте SWFLoader / Image или Loader + UIComponent.addChild() для загрузки и @Embed() мета тег для встраивания. Имейте в виду, что для того, чтобы добавить во фрейморковский дисплей лист объект он должен либо имплементить кучу интерфейсов, либо наследоваться от UIComponent (который эти интерфейсы уже имплементит)
Просто MXML (без участия флексового фреймворка) - смотрите примеры по второй ссылке.


* Да, еще важный момент - <mx:Script> может содержать только объявления переменых и функций. Технически, он может содержать и вызовы функций, но область видимости их вызова будет совсем не та, что вы думаете, и, вобщем, лучше их там не вызывать.

udaaff
19.11.2009, 15:25
Заверните в UIComponent...
package
{
import mx.core.UIComponent;

public class MyComponent extends UIComponent
{
public function MyComponent()
{
}

private var ellipse:Ellipse;

override protected function createChildren():void
{
super.createChildren();

ellipse = new Ellipse();
addChild(ellipse);
}

}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<local:MyComponent/>
</mx:Application>

Vishapakahr
19.11.2009, 15:59
Когда вы говорите Flex - что вы имеете в виду?

AS3 - так вы уже написали.
AS3 + Flex framework - [Embed()] метатег для встраивания или скомпилируйте SWC и используйте класс от туда. + Читайте следующий пункт.
MXML + Flex framework - используйте SWFLoader / Image или Loader + UIComponent.addChild() для загрузки и @Embed() мета тег для встраивания. Имейте в виду, что для того, чтобы добавить во фрейморковский дисплей лист объект он должен либо имплементить кучу интерфейсов, либо наследоваться от UIComponent (который эти интерфейсы уже имплементит)
Просто MXML (без участия флексового фреймворка) - смотрите примеры по второй ссылке.


* Да, еще важный момент - <mx:Script> может содержать только объявления переменых и функций. Технически, он может содержать и вызовы функций, но область видимости их вызова будет совсем не та, что вы думаете, и, вобщем, лучше их там не вызывать.

спасибо !

как видите я всего лишь начинающий , работал толька на flash CS4 , и вот вот
хочу переходить на флекс , так что думаю мне еше много надо потрудится .

Добавлено через 12 минут
Заверните в UIComponent...
package
{
import mx.core.UIComponent;

public class MyComponent extends UIComponent
{
public function MyComponent()
{
}

private var ellipse:Ellipse;

override protected function createChildren():void
{
super.createChildren();

ellipse = new Ellipse();
addChild(ellipse);
}

}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<local:MyComponent/>
</mx:Application>


спасибо , это сработало :)

Добавлено через 25 часов 32 минуты
udaaff

то же самое на flash builder beta 2 делаю не сработывает ( такой error дает на
MXML e .

the prefix "local" for element "local:MyComponent" is not bound
что нужно делать ? пожалуйста это очень важно ! а срабатывал у меня на
flex builder 3 .

JekelSkaz
22.11.2009, 05:25
пропиши в главном mxml коде ссыль на as скрипт "component.as" допустим:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:Script source="component.as" />
<local:MyComponent/>
</mx:Application>