Просмотр полной версии : CSS, ActionScript 3.0 и прочий MVC
Могу ли я во Flash пользоваться css-файлами? То есть задавать стиль объекта (например TextField) не из ActionScript кода, а пользуясь внешним файлом. Может не CSS, может, нужно строить это как-то иначе... Я несколько лет не работала с Flash-ем, сейчас все сильно поменялось, особенно - подход.
я как раз пыталась пользоваться классом StyleSheet, но скрипт добежал до load и упал. Я завтра утром вышлю с какой ошибкой он упал. Я так поняла, что он упал, потому что StyleSheet больше не поддерживает load url. По крайней мере во Flex Developer-е load не был обнаружен среди методов StyleSheet... В любом случае спасибо - я завтра посмотрю все это подробнее
aksyos класс StyleSheet находится не в TextField а в flash.text.StyleSheet.
я получаю следующее сообщение об ошибке:
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
Наверно, так задумано
Это не работает. Я получаю сообщения об ошибках:
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?
aksyos, речь про AS3, а пишешь про AS2/AS1 :D
aksyos, речь про AS3, а пишешь про AS2/AS1 :D
Это точно промашка вышла. Я ваще плохо вижу и соображаю.:rolleyes:
Файлы вообще грузим классом 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.
}
}
}
Все, ура, понял. Спасибо!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.