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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.12.2011, 17:10
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 11  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Цитата:
А попробовать не судьба? Заодно и ошибку бы у меня в формулах нашли, ибо писалось на коленке
Естественно попробовал, результат уже написал, не меняется x

Цитата:
Я вам в первом же посте ответил как получить ширину текста. На момент вызова moveText bounds имеет корректные размеры.
label.bounds - ширина самого label'а, при изменении left, он расширяется.
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 28.12.2011, 17:31
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 12  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Естественно попробовал, результат уже написал, не меняется x
В mxml поменяйте параметры как описано тут http://www.flasher.ru/forum/showpost...85&postcount=6 с той кашей что вы написали, там вообще ничто меняться не будет.

Добавлено через 5 минут
Цитата:
label.bounds - ширина самого label'а, при изменении left, он расширяется.
Код AS3:
use namespace mx_internal;
private function moveText(e:TimerEvent):void
{
    if(this.moveLeft)
    {
        labelDisplay.x -= 4;
        if(labelDisplay.x < -labelDisplay.width)
        {
            this.moveLeft = false;
        }
    }
    else
    {
        labelDisplay.x += 4;
        if(labelDisplay.x > 4)
        {
            this.moveLeft = true;
        }
    }
 
    var g:Graphics = labelDisplay.graphics;
    var b:Rectangle = labelDisplay.bounds;
 
    g.lineStyle(1, 0xFF0000);
    g.drawRect(b.x, b.y, b.width, b.height);
}
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

Старый 28.12.2011, 17:55
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 14  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
А из-за этого и весь сыр-бор, Копаюсь дальше...
Увы, я не обладаю телепатическими способностями.

Добавлено через 16 минут
Код:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                width="100%">
    <fx:Script>
        <![CDATA[
            import mx.core.mx_internal;
            import mx.events.FlexEvent;

            private var timer:Timer;
            private var moveLeft:Boolean=true;


            private function normalState(event:FlexEvent):void
            {
                if (this.timer != null)
                {
                    this.timer.removeEventListener(TimerEvent.TIMER, moveText);
                    this.timer.stop();
                    this.timer=null;
                    this.labelDisplay.left=8;
                }
            }

            private function selectedState(event:FlexEvent):void
            {
                this.timer=new Timer(50);
                this.timer.addEventListener(TimerEvent.TIMER, moveText);
                this.timer.start();
            }

            use namespace mx_internal;

            private function moveText(e:TimerEvent):void
            {
                var labelLeft:Number=Number(labelDisplay.left);
                var bounds:Rectangle=labelDisplay.bounds;

                if (this.moveLeft)
                {
                    labelLeft-=4;
                    if (labelLeft < -bounds.width)
                    {
                        this.moveLeft=false;
                    }
                }
                else
                {
                    labelLeft+=4;
                    if (labelLeft > 4)
                    {
                        this.moveLeft=true;
                    }
                }

                labelDisplay.left=labelLeft;
            }
        ]]>
    </fx:Script>
    <s:states>
        <s:State name="normal"
                 enterState="normalState(event)"/>
        <s:State name="selected"
                 enterState="selectedState(event)"/>
    </s:states>


    <s:Label id="labelDisplay"
             left="8"
             left.normal="8"
             right="8"
             fontSize="36"
             verticalCenter="0"
             maxDisplayedLines="1"/>

</s:ItemRenderer>
__________________
משיח לא בא
משיח גם לא מטלפן

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

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
alatar спасибо за помощь, решил сделать так :
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
				xmlns:s="library://ns.adobe.com/flex/spark">
	<fx:Script>
		<![CDATA[		
			import mx.core.mx_internal;
			import mx.events.FlexEvent;
 
			private var timer:Timer;
			private var moveLeft:Boolean = true;
 
			private const PADDING:uint = 12;
			private const SPEED:uint = 4;
 
			private function normalState(event:FlexEvent):void
			{
				if(this.timer != null)
				{
					this.timer.removeEventListener(TimerEvent.TIMER , moveText);
					this.timer.stop();
					this.timer = null;
					this.labelDisplay.setStyle("paddingLeft" , PADDING);
				}
			}
 
			private function selectedState(event:FlexEvent):void
			{
				var textWidth:Number = this.labelDisplay.measuredWidth - this.labelDisplay.getStyle("paddingLeft");
				if(textWidth > this.labelDisplay.width + PADDING);
				this.timer = new Timer(50);
				this.timer.addEventListener(TimerEvent.TIMER , moveText);
				this.timer.start();			
			}
 
			private function moveText(e:TimerEvent):void
			{
				var textWidth:Number = this.labelDisplay.measuredWidth - this.labelDisplay.getStyle("paddingLeft");
				if(this.moveLeft)
				{
					this.labelDisplay.setStyle("paddingLeft" , this.labelDisplay.getStyle("paddingLeft") - SPEED);
					if(Math.abs(this.labelDisplay.getStyle("paddingLeft")) >  textWidth - this.labelDisplay.width + PADDING){
						this.moveLeft = false;
					}
				}else{
					this.labelDisplay.setStyle("paddingLeft" , this.labelDisplay.getStyle("paddingLeft") + SPEED);
					if(this.labelDisplay.getStyle("paddingLeft") >  PADDING){
						this.moveLeft = true;
					}
				}
 
			}
 
		]]>
	</fx:Script>
	<s:states> 
		<s:State name="normal" enterState="normalState(event)"/> 
		<s:State name="selected" enterState="selectedState(event)"/> 
	</s:states> 
 
 
	<s:Label id="labelDisplay"
			 left="{PADDING}" right="8" top="8" bottom="8"
			 fontSize="36" verticalCenter="0" maxDisplayedLines="1"/>
 
</s:ItemRenderer>
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

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

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

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


 


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


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