PDA

Просмотр полной версии : ADDED_TO_STAGE


Dr_Bra
24.02.2010, 14:05
Привет, ребята не получается добавить событие для сцены

stage.addEventListener(Event.ENTER_FRAME ...

для этого необходимо воспользоваться ADDED_TO_STAGE, но у меня не получается правильно это дело применить. Посмотрите, на код, плиз., подскажите, как его поправить??

package
{
import flash.text.TextField;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.display.Stage;
import flash.display.StageScaleMode;
import flash.display.StageAlign;


public class TextScrolling extends Sprite
{
var dragging:Boolean = false;
var speech:String = "НАЧАЛО, как следует из вышесказанного, экономит ребрендинг, невзирая на действия конкурентов. Медиа, на первый взгляд, концентрирует портрет потребителя, оптимизируя бюджеты. Общество потребления уравновешивает эксклюзивный имидж, осознавая социальную ответственность бизнеса. Маркетинг, анализируя результаты рекламной кампании, специфицирует популярный как следует из вышесказанного, экономит ребрендинг, невзирая на действия конкурентов. Медиа, на первый взгляд, концентрирует портрет потребителя, оптимизируя бюджеты. Общество потребления уравновешивает эксклюзивный имидж, осознавая социальную ответственность бизнеса. Маркетинг, анализируя результаты рекламной кампании, специфицирует популярный как следует из вышесказанного, экономит ребрендинг, невзирая на действия конкурентов. Медиа, на первый взгляд, концентрирует портрет потребителя, оптимизируя бюджеты. Общество потребления уравновешивает эксклюзивный имидж, осознавая социальную ответственность бизнеса. Маркетинг, анализируя результаты рекламной кампании, специфицирует популярный как следует из вышесказанного, экономит ребрендинг, невзирая на действия конкурентов. Медиа, на первый взгляд, концентрирует портрет потребителя, оптимизируя бюджеты. Общество потребления уравновешивает эксклюзивный имидж, осознавая социальную ответственность бизнеса. Маркетинг, анализируя результаты рекламной кампании, специфицирует популярный как следует из вышесказанного, экономит ребрендинг, невзирая на действия конкурентов. Медиа, на первый взгляд, концентрирует портрет потребителя, оптимизируя бюджеты. Общество потребления уравновешивает эксклюзивный имидж, осознавая социальную ответственность бизнеса. Маркетинг, анализируя результаты рекламной кампании, специфицирует популярный ВСЕ!!!.";


public function TextScrolling(tSpeech:TextField, bScrollUp:Sprite, bScrollDown:Sprite, dScrollDrag:Sprite, skrollHeight:Sprite)
{
tSpeech.text = speech; // Передаешь параметр из кадра в клас
tSpeech.multiline = true;
tSpeech.wordWrap = true;

bScrollUp.addEventListener(MouseEvent.CLICK, upScrollText);
function upScrollText(evt:MouseEvent):void
{
trace(tSpeech.scrollV);
tSpeech.scrollV -= 1;
}

bScrollDown.addEventListener(MouseEvent.CLICK, downScrollText);
function downScrollText(evt:MouseEvent):void
{
trace(tSpeech.scrollV);
tSpeech.scrollV += 1;
}

var bounds:Rectangle = new Rectangle(dScrollDrag.x, dScrollDrag.y, 0, skrollHeight.height); //260 - это длинна skrollHeight

dScrollDrag.addEventListener(MouseEvent.MOUSE_DOWN, dragScroll);
function dragScroll(evt:MouseEvent):void
{
dScrollDrag.startDrag(false, bounds);
dragging = true;
}

stage.addEventListener(MouseEvent.MOUSE_UP, dropScroll);
function dropScroll(evt:MouseEvent):void
{
dScrollDrag.stopDrag();
dragging = false;
}

stage.addEventListener(Event.ENTER_FRAME, chackSlider);
function chackSlider(evt:Event):void
{
if(dragging)
{
//trace("scroll");
tSpeech.scrollV = Math.round((dScrollDrag.y - bounds.y)*tSpeech.maxScrollV/90);
}
}
tSpeech.addEventListener(Event.SCROLL, speechScrolled);
function speechScrolled(evt:Event):void
{
dScrollDrag.y = bounds.y + (tSpeech.scrollV*skrollHeight.height/tSpeech.maxScrollV);
}
tSpeech.mouseWheelEnabled = true;
}

//-------------------------------------------------------------------------------

public function addStage():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
}

//-------------------------------------------------------------------------------
}
}

dimarik
24.02.2010, 14:27
package
{
import flash.display.Sprite;
import flash.events.Event;

public class TextScrolling extends Sprite
{

public function TextScrolling()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
}

}
}

Dr_Bra
24.02.2010, 14:55
а весь остальной код можно вписать в функцию TextScrolling? Просто самая проблема - то и была, в том, что не смог правильно расположить этот кусок скрипта, заключенный в //--------------------- эти рамки

Wolsh
24.02.2010, 14:59
НЕ НАДО в конструктор засовывать хендлеры! Все функции должны находиться в теле класса. А вот листенер ADDED_TO_STAGE надо вешать в конструкторе, а не во внешней ф-ии, которая никогда не будет вызвана. Т.е. то что у тебя в теле public function addStage() - должно быть в конструкторе))

Dr_Bra
24.02.2010, 15:14
НЕ НАДО в конструктор засовывать хендлеры! Все функции должны находиться в теле класса. А вот листенер ADDED_TO_STAGE надо вешать в конструкторе, а не во внешней ф-ии, которая никогда не будет вызвана. Т.е. то что у тебя в теле public function addStage() - должно быть в конструкторе))

значит вункцию addStage() помещаем внутрь конструктора TextScrolling(), а те функции что сейчас содержит TextScrolling() выносим ??