PDA

Просмотр полной версии : CSS, ActionScript 3.0 и прочий MVC


olkina
28.01.2007, 21:25
Могу ли я во Flash пользоваться css-файлами? То есть задавать стиль объекта (например TextField) не из ActionScript кода, а пользуясь внешним файлом. Может не CSS, может, нужно строить это как-то иначе... Я несколько лет не работала с Flash-ем, сейчас все сильно поменялось, особенно - подход.

olkina
29.01.2007, 01:06
я как раз пыталась пользоваться классом StyleSheet, но скрипт добежал до load и упал. Я завтра утром вышлю с какой ошибкой он упал. Я так поняла, что он упал, потому что StyleSheet больше не поддерживает load url. По крайней мере во Flex Developer-е load не был обнаружен среди методов StyleSheet... В любом случае спасибо - я завтра посмотрю все это подробнее

Nirth
29.01.2007, 03:38
aksyos класс StyleSheet находится не в TextField а в flash.text.StyleSheet.

olkina
29.01.2007, 13:11
я получаю следующее сообщение об ошибке:

TypeError: Error #1006: load is not a function.
at playgropund$iinit()

А код такой:

var myCSS:StyleSheet = new StyleSheet();
var cssURL:String = "PGStyles.css";
myCSS.load(cssURL);
myCSS.onLoad = function (success:Boolean):void {
if (success) {
tf = TextFormat(myCSS);
}
}

В начале package есть
import flash.text.StyleSheet;

А в документации у класса StyleSheet метода load нет:
http://livedocs.macromedia.com/flex/201/langref/flash/text/StyleSheet.html

Наверно, так задумано

olkina
29.01.2007, 13:48
Это не работает. Я получаю сообщения об ошибках:
var myCSS:TextField.StyleSheet = new TextField.StyleSheet();

<i>Severity Description Resource In Folder Location Creation Time Id
2 1046: Type was not found or was not a compile-time constant: StyleSheet. playgropund.as playgropund line 21 11:44:28 29 ינואר 2007 148

Severity Description Resource In Folder Location Creation Time Id
2 1061: Call to a possibly undefined method StyleSheet through a reference with static type Class. playgropund.as playgropund line 21 11:44:28 29 ינואר 2007 149
</i>

Может, Вы работаете не с ActionScript 3?

etc
29.01.2007, 14:09
aksyos, речь про AS3, а пишешь про AS2/AS1 :D

aksios
29.01.2007, 14:21
aksyos, речь про AS3, а пишешь про AS2/AS1 :D
Это точно промашка вышла. Я ваще плохо вижу и соображаю.:rolleyes:

Nirth
29.01.2007, 16:13
Файлы вообще грузим классом URLLoader или URLStream, в данном случае подходит URLLoader:

package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.StyleSheet;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;

public class CSSLoader extends Sprite
{
public function CSSLoader()
{
var request:URLRequest = new URLRequest("style.css"); //Create URLRequest
var loader:URLLoader = new URLLoader(); //Create URLLoader, this instance will load CSS file.
loader.addEventListener(Event.COMPLETE, parseCSS); //suscribe handler to COMPLETE event, which will be fired when file is loaded.
loader.load(request); //invoke load method.
}

private function parseCSS(event:Event):void
{
var loader:URLLoader = event.target as URLLoader; //store referece to loader instance.

var second:Object = new Object(); //create object container for style
second.color = "#FF0000"; //create style fields
second.fontStyle = "italic";

var css:StyleSheet = new StyleSheet(); //create StyleSheet instance.
css.parseCSS(loader.data as String); //parce loaded file to CSS
css.setStyle(".second", second); //manualy create style from object.

var textField:TextField = addChild(new TextField()) as TextField; //Add new TextField instance, and store it's reference.
textField.autoSize = TextFieldAutoSize.LEFT; //Set up TextField auto size, stylesheet and text properties.
textField.styleSheet = css;
textField.htmlText = "<body><span class='first'>Hello</span> <span class='second'>World!</span></body>";

trace(textField.styleSheet.getStyle("first").color); //check styles.
trace(textField.styleSheet.getStyle("second").color);

loader.removeEventListener(Event.COMPLETE, parseCSS); //remove method reference from IEventDispatcher.
}
}
}

olkina
29.01.2007, 16:23
Все, ура, понял. Спасибо!