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

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

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

Регистрация: Feb 2009
Сообщений: 24
По умолчанию Не удается создать свойство в fl.text.TLFTextField.

Народ помогите разобраться почему не робит код. Задача чтоб при растягивании флешки текстовое поле тоже растягивалось и текст переформатировался. При добавлении текстового поля TLF (оно же далее по коду "ttt") появляются ошибки.
Где именно смотрите в коде. Пометил стрелками "<<<<".
Если можно свои версии излагайте кодом, я не прогер и поэтому помощь типа поюзай хелп по теме такой то и т.п. не помогут

Код AS3:
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.
Старый 25.01.2012, 11:22
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
У TLFTextField нет таких свойств, поэтому вы и не можете их использовать!
http://help.adobe.com/en_US/FlashPla...TextField.html
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 25.01.2012, 13:55
dimetradim вне форума Посмотреть профиль Отправить личное сообщение для dimetradim Найти все сообщения от dimetradim
  № 3  
Ответить с цитированием
dimetradim

Регистрация: Feb 2009
Сообщений: 24
ну это я и так понял, как это поправить в данном случае?

Старый 25.01.2012, 14:00
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 4  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Код AS3:
      objects[i].xRatio = objects[i].x / this.stage.stageWidth;
      objects[i].yRatio = objects[i].y / this.stage.stageHeight;
Что должно делать? И где потом пригодиться?
Код AS3:
scalable
вы во всех классах добавили этот параметр? (правильно будет scaleble)
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 25.01.2012, 14:31
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 5  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Genzo
Цитата:
(правильно будет scaleble)
да ну? lingvo:
Цитата:
scalable масштабируемый, наращиваемый scalability
dimetradim
самый простой вариант найдите какой нибудь лейаут маганер (layout manager) ну или напишите свой:

Код AS3:
            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;
                        }
                    }
                }
            }

Старый 25.01.2012, 15:15
dimetradim вне форума Посмотреть профиль Отправить личное сообщение для dimetradim Найти все сообщения от dimetradim
  № 6  
Ответить с цитированием
dimetradim

Регистрация: Feb 2009
Сообщений: 24
nOobCrafter Спасибо. Помогло. Только далее по коду где присваиваем scalable = true ошибка появляется. Ниже привёл.

Код AS3:
            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;
                        }
                    }
                }
            }
Добавлено через 30 минут
Кстати та же ошибка появляется если пробовать тянуть экземпляр кнопки

Старый 25.01.2012, 20:27
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 7  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
dimetradim прочтите советы данные вам в теме еще раз.
используемые вами классы TLFTextField, Sprite и т .д. не являются динамическими, то есть вы не можете просто так создать им св-во которое вам надо, или оборачивайте данные в нужную вам структуру или расширяйте штатные классы и уже с ними работайте.

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

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

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


 


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


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