альфа-версия не работает с текстом (flash, as3)

#flash #actionscript-3 #text #scrollbar #alpha

#flash #actionscript-3 #текст #полоса прокрутки #альфа

Вопрос:

я хотел бы создать эффект с помощью «alpha», но когда я использую определенный класс для установки полосы прокрутки в моем тексте, текст не реагирует на мою альфу. Вы увидите, что текст не реагирует на альфа 0 в начале анимации.

Я использую хороший класс полосы прокрутки, который я нашел в Интернете, но я не могу объяснить, почему это происходит.

Вот мой код в fla, который импортирует другой класс, который импортирует класс полосы прокрутки 😉 :

 import com.greensock.*;
import com.greensock.easing.*;

var loader:Loader = new Loader;
var url:URLRequest = new URLRequest("Rhizo.swf");
loader.load(url);

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ec);

function ec (e:Event){
    var a = e.target.content;

    a.alpha = 0;
    addChild(e.target.content);
    TweenLite.to(a, 3, { x:30, alpha:1});

}
  

класс document, связанный с fla, который содержит приведенный выше код, где я вызываю класс полосы прокрутки :

 public class ScrollBarAS3 extends MovieClip {
        public var my_scrollbar:MakeScrollBar;

        public function ScrollBarAS3() {
            my_scrollbar = new MakeScrollBar( scroll_mc, scroll_text );
            scroll_txt.selectable = true; 
        }

        public function scroll_text( n:Number ) {
            scroll_txt.scrollV = Math.round( ( scroll_txt.maxScrollV - 1 ) * n )   1;
        }
  

а вот класс полосы прокрутки :

 package {
    import flash.display.Stage;
    import flash.display.MovieClip;
    import flash.events.*;
    import flash.geom.Rectangle;

    public class MakeScrollBar extends MovieClip {
        private var host_mc:MovieClip;
        private var call_back:Function;

        private var drag_mc:MovieClip;
        private var track_mc:MovieClip;

        private var scroll_rect:Rectangle;
        private var upper_limit:Number;
        private var range:Number;

        public function MakeScrollBar( _mc:MovieClip, cb:Function ) {
            host_mc = _mc;
            call_back = cb;

            drag_mc = host_mc.drag_mc; // 
            drag_mc.buttonMode = true;
            drag_mc.mouseChildren = false
            drag_mc.addEventListener( MouseEvent.MOUSE_DOWN, press_drag );
            track_mc = host_mc.track_mc;
            track_mc.buttonMode = true;
            track_mc.mouseChildren = false
            track_mc.addEventListener( MouseEvent.CLICK, click_track );

            set_limits();
        }

        private function press_drag( event:MouseEvent ):void {
            /***************************************************/
            drag_mc.stage.addEventListener( MouseEvent.MOUSE_UP, release_drag, false, 0, true );
            /***************************************************/ 
            drag_mc.startDrag( false, scroll_rect );
            drag_mc.addEventListener( Event.ENTER_FRAME, drag );
        }

        private function release_drag( event:MouseEvent ):void {
            drag_mc.removeEventListener( Event.ENTER_FRAME, drag );
            drag_mc.stage.removeEventListener( MouseEvent.MOUSE_UP, release_drag );
            drag_mc.stopDrag();
        }

        private function click_track( event:MouseEvent ):void {
        }

        private function set_limits():void {
            scroll_rect = new Rectangle( track_mc.x, track_mc.y, 0, track_mc.height - drag_mc.height );
            upper_limit = track_mc.y;
            range = track_mc.height - drag_mc.height;
        }

        private function drag( event:Event ):void {
            var p = ( drag_mc.y - track_mc.y ) / range;
            call_back( p );
        }
    }
}
  

Вы знаете, что я мог бы сделать, чтобы заставить альфа-версию работать?

Большое спасибо

Приветствия

Ответ №1:

С точки зрения AS3 вы не сможете применить прозрачность к текстовому полю, если для его свойства embedFonts не установлено значение true . Я бы предположил, что проблема связана с загруженным SWF-файлом, но вы не предоставляете для этого никакого кода…

//———————— Редактировать ———————//

Что произойдет, если вы просто сделаете это? Отображается ли текст?

функция ec (e:событие){
 var a = e.target.content;

 a.alpha = 0;
 addChild(e.target.content);

}

Вы тестировали .swf локально?
Вы пробовали просто загрузить фильм без полосы прокрутки и смогли заставить альфа-версию работать?
На данный момент я не вижу ничего в классе полосы прокрутки, что могло бы повлиять на прозрачность текста…

Комментарии:

1. привет, Патрикс, я помещаю весь код, который я использую, первый фрагмент кода — это то, что я загружаю, а 2 последних фрагмента кода — это сам класс. я протестировал один видеоролик с текстом внутри него, и альфа работает, но класс не позволяет мне делать то же самоес полосой прокрутки.

2. спасибо за вашу помощь, я ценю, кажется, что если я использую полосу прокрутки, альфа в тексте не работает. Я не знаю, должно быть, я чего-то не хватает…