|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2009
Сообщений: 24
|
Не удается создать свойство в fl.text.TLFTextField.
Народ помогите разобраться почему не робит код. Задача чтоб при растягивании флешки текстовое поле тоже растягивалось и текст переформатировался. При добавлении текстового поля TLF (оно же далее по коду "ttt") появляются ошибки.
Где именно смотрите в коде. Пометил стрелками "<<<<". Если можно свои версии излагайте кодом, я не прогер и поэтому помощь типа поюзай хелп по теме такой то и т.п. не помогут var normalWidth:Number = this.stage.stageWidth; var normalHeight:Number = this.stage.stageHeight; // Массив, в котором храним обьекты, которые изменяются при изменении окна var objects:Array = new Array(panorama, logo, minsk, plashka, blok_txt, prodaja, ttt); for (var i:uint = 0; i < objects.length; i++){ objects[i].xRatio = objects[i].x / this.stage.stageWidth; // <<<< в выводе выдаёт - ReferenceError: Error #1056: Не удается создать свойство xRatio в fl.text.TLFTextField. at _55x100_fla::MainTimeline/frame1() objects[i].yRatio = objects[i].y / this.stage.stageHeight; } //Помечаем обьекты которые можно увеличивать plashka.scalable = true; // ttt.scalable = true; <<<< и если тут раскоментить то при компиляции выдает - Монтажный кадр 1, слой "Action Script", кадр 1, строка 13 1119: Обращение возможного неопределенного свойства scalable через ссылку со статическим типом fl.text:TLFTextField . this.stage.scaleMode = "noScale"; this.stage.align = "TL"; this.stage.addEventListener(Event.RESIZE, resizeHandler); resizeHandler(); function resizeHandler(e:Event = null):void { if (this.stage.stageWidth > 800){ for (var i:uint = 0; i < objects.length; i++){ objects[i].x = this.stage.stageWidth * objects[i].xRatio; if(objects[i].scalable){ objects[i].scaleX = this.stage.stageWidth / this.normalWidth; } } } if (this.stage.stageHeight > 55){ for (var j:uint = 0; j < objects.length; j++){ objects[j].y = this.stage.stageHeight * objects[j].yRatio; if(objects[j].scalable){ objects[j].scaleY = this.stage.stageHeight / this.normalHeight; } } } } Последний раз редактировалось dimetradim; 25.01.2012 в 04:16. |
|
|||||
У TLFTextField нет таких свойств, поэтому вы и не можете их использовать!
http://help.adobe.com/en_US/FlashPla...TextField.html
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
Регистрация: Feb 2009
Сообщений: 24
|
ну это я и так понял, как это поправить в данном случае?
|
|
|||||
objects[i].xRatio = objects[i].x / this.stage.stageWidth; objects[i].yRatio = objects[i].y / this.stage.stageHeight; вы во всех классах добавили этот параметр? (правильно будет scaleble)
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
Genzo
Цитата:
Цитата:
самый простой вариант найдите какой нибудь лейаут маганер (layout manager) ну или напишите свой: var normalWidth: Number = this.stage.stageWidth; var normalHeight: Number = this.stage.stageHeight; var objects: Array = [panorama, logo, minsk, plashka, blok_txt, prodaja, ttt]; // иницитировать данные мы можетте как вам угодно, я использвоал цикл, просто так меньше писать. var data: Array = []; for (var i: uint = 0; i < objects.length; i++) { data[i] = { target: objects[i], xRatio: objects[i].x / this.stage.stageWidth, yRatio: objects[i].y / this.stage.stageHeight, scalable : objects[i] is TLFTextField // например } } plashka.scalable = true; this.stage.scaleMode = "noScale"; this.stage.align = "TL"; this.stage.addEventListener(Event.RESIZE, resizeHandler); resizeHandler(); function resizeHandler(e: Event = null): void { if (this.stage.stageWidth > 800) { for (var i: uint = 0; i < data.length; i++) { data[i].target.x = this.stage.stageWidth * data[i].xRatio; if (data[i].scalable) { data[i].scaleX = this.stage.stageWidth / this.normalWidth; } } } if (this.stage.stageHeight > 55) { for (var j: uint = 0; j < data.length; j++) { data[j].target.y = this.stage.stageHeight * data[j].yRatio; if (data[j].scalable) { data[j].scaleY = this.stage.stageHeight / this.normalHeight; } } } } |
|
|||||
Регистрация: Feb 2009
Сообщений: 24
|
nOobCrafter Спасибо. Помогло. Только далее по коду где присваиваем scalable = true ошибка появляется. Ниже привёл.
var normalWidth: Number = this.stage.stageWidth; var normalHeight: Number = this.stage.stageHeight; var objects: Array = [panorama, logo, minsk, plashka, blok_txt, prodaja, ttt]; var data: Array = []; for (var i: uint = 0; i < objects.length; i++) { data[i] = { target: objects[i], xRatio: objects[i].x / this.stage.stageWidth, yRatio: objects[i].y / this.stage.stageHeight, scalable : objects[i] is TLFTextField // например } } plashka.scalable = true; ttt.scalable = true; // <<< если тут присвоить тру, чтоб тянулся блок по ширине, то выдает ошибку Монтажный кадр 1, слой "Action Script", кадр 1, строка 17 1119: Обращение возможного неопределенного свойства scalable через ссылку со статическим типом fl.text:TLFTextField . this.stage.scaleMode = "noScale"; this.stage.align = "TL"; this.stage.addEventListener(Event.RESIZE, resizeHandler); resizeHandler(); function resizeHandler(e: Event = null): void { if (this.stage.stageWidth > 800) { for (var i: uint = 0; i < data.length; i++) { data[i].target.x = this.stage.stageWidth * data[i].xRatio; if (data[i].scalable) { data[i].scaleX = this.stage.stageWidth / this.normalWidth; } } } if (this.stage.stageHeight > 55) { for (var j: uint = 0; j < data.length; j++) { data[j].target.y = this.stage.stageHeight * data[j].yRatio; if (data[j].scalable) { data[j].scaleY = this.stage.stageHeight / this.normalHeight; } } } } Кстати та же ошибка появляется если пробовать тянуть экземпляр кнопки |
|
|||||
dimetradim прочтите советы данные вам в теме еще раз.
используемые вами классы TLFTextField, Sprite и т .д. не являются динамическими, то есть вы не можете просто так создать им св-во которое вам надо, или оборачивайте данные в нужную вам структуру или расширяйте штатные классы и уже с ними работайте. |
Часовой пояс GMT +4, время: 17:16. |
|
« Предыдущая тема | Следующая тема » |
|
|