ScrollPane-set scroll position
Ich kann nicht kontrollieren den Blättern eines scrollpane-Komponente aus meiner actionscript (ich bin mit actionscript 3.0)
Hier ist meine Definition:
var scrollPane:ScrollPane = new ScrollPane();
scrollPane.verticalScrollPolicy = "false";
scrollPane.move(374, 0);
scrollPane.setSize(476, 370);
Wenn ich versuche es einzustellen - scrollPane.horizontalScrollPosition = 500; bekomme ich folgende Fehlermeldung
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at fl.containers::ScrollPane/setScrollDrag()
at fl.containers::ScrollPane/draw()
at fl.core::UIComponent/drawNow()
at fl.containers::BaseScrollPane/set horizontalScrollPosition()
at Program()
at Preloader/main()
at Preloader/enterFrameHandler()
Sogar scrollPane.horizontalScrollPosition = scrollPane.horizontalScrollPosition, wirft den gleichen Fehler.
Jedoch trace(scrollPane.horizontalScrollPosition -); funktioniert Prima.
Habe ich versucht hPosition auch und es funktioniert überhaupt nicht. Irgendwelche Hinweise darauf, wie kann ich die scroll-position würde sehr geschätzt werden.
Folgenden ist der gesamte code
package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.containers.ScrollPane;
public class Program extends Sprite {
public function Program() {
//define variable
var startX:Number;
var startY:Number;
var counter:Number = 0;
const LIMIT:Number = 100;
var intMessages:Number = 80;
var intBoardSize:Number = 476*(Math.round(intMessages/15)+1);
var intMessageMinX:Number = 35;
var intMessageMaxX:Number = intBoardSize-99;
var intMessageMinY:Number = 35;
var intMessageMaxY:Number = 310;
var activeGloveName:String = ""
var intDegreeHigh:Number = 45;
var intDegreeLow:Number = -45;
//create objects
var mcglove:mcGlove = new mcGlove();
var mcglovetarget:mcGloveTarget = new mcGloveTarget();
var myDropShadowFilterSmall = new DropShadowFilter (2,45,0x000000,0.65,3,3,2,3,false,false,false);
var myDropShadowFilterDown = new DropShadowFilter (3,45,0x000000,0.65,5,5,2,3,false,false,false);
var myDropShadowFilterUp = new DropShadowFilter (5,45,0x000000,0.65,7,7,2,3,false,false,false);
var topShadow = new DropShadowFilter (3,90,0x000000,0.35,8,8,2,3,false,false,false);
var holder:MovieClip = new MovieClip();
var pinkline:Sprite = new Sprite();
var searchBox:Sprite = new Sprite();
var topShadowBox:Sprite = new Sprite();
var aMessages:Array = new Array();
//Create a glove for each message
for (var x = 0; x < intMessages; x++){
aMessages[x] = new mcGlove();
aMessages[x].scaleX = .28;
aMessages[x].scaleY = .28;
counter = 0;
position(aMessages[x]);
aMessages[x].rotation = (0, 0, 0, Math.round(Math.random() * (intDegreeHigh - intDegreeLow)) + intDegreeLow);
aMessages[x].filters = [myDropShadowFilterSmall];
holder.addChild(aMessages[x]);
aMessages[x].name = "glove" + x;
aMessages[x].addEventListener(MouseEvent.MOUSE_DOWN, selectMessage);
aMessages[x].addEventListener(MouseEvent.MOUSE_UP, releaseMessage);
aMessages[x].buttonMode = true;
}
var scrollPane:ScrollPane = new ScrollPane();
scrollPane.verticalScrollPolicy = "false";
scrollPane.move(374, 0);
scrollPane.setSize(476, 370);
scrollPane.horizontalLineScrollSize = 120;
topShadowBox.graphics.beginFill(0x333333);
topShadowBox.graphics.drawRect(0,0,870,5);
topShadowBox.x = -10;
topShadowBox.y = -5;
topShadowBox.filters = [topShadow];
pinkline.graphics.beginFill(0xDB9195);
pinkline.graphics.drawRect(0,0,476,2);
pinkline.x = 374;
pinkline.y = 353;
searchBox.graphics.beginFill(0xDB9195);
searchBox.graphics.drawRect(0,0,476,25);
searchBox.x = 374;
searchBox.y = 370;
//add to frame
sortObjects();
scrollPane.source = holder;
scrollPane.horizontalScrollPosition = 5;
//create instance names for referancing/compairing objects
mcglove.name = "mcglove";
mcglovetarget.name = "mcglovetarget";
//position the glove and modify apperiance
mcglove.x = 163;
mcglove.y = 211;
mcglove.filters = [myDropShadowFilterDown];
mcglovetarget.x = 615;
mcglovetarget.y = 211;
mcglovetarget.alpha = 0
//action listeners
mcglove.addEventListener(MouseEvent.MOUSE_DOWN, selectGlove);
mcglove.addEventListener(MouseEvent.MOUSE_UP, releaseGlove);
function position(target) {
target.x = Math.round(Math.random() * (intMessageMaxX - intMessageMinX)) + intMessageMinX;
target.y = Math.round(Math.random() * (intMessageMaxY - intMessageMinY)) + intMessageMinY;
for (var i:uint=0; i<aMessages.length -1 ; i++) {
if(target.hitTestObject(aMessages[i]) && counter < LIMIT){
counter++;
position(target);
return false;
};
}
}
function selectGlove(event:MouseEvent):void {
event.target.startDrag(true);
var myTargetName:String = event.target.name + "target";
var myTarget:DisplayObject = getChildByName(myTargetName);
mcglove.filters = [myDropShadowFilterUp];
addChild(myTarget);
event.target.parent.addChild(event.target);
addChild(topShadowBox);
myTarget.alpha = .5;
startX = event.target.x;
startY = event.target.y;
}
function releaseGlove(event:MouseEvent):void {
event.target.stopDrag();
var myTargetName:String = event.target.name + "target";
var myTarget:DisplayObject = getChildByName(myTargetName);
event.target.filters = [myDropShadowFilterDown];
myTarget.alpha = 0;
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget){
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, selectGlove);
event.target.removeEventListener(MouseEvent.MOUSE_UP, releaseGlove);
event.target.x = myTarget.x;
event.target.y = myTarget.y;
var myTween:Tween = new Tween(getChildByName(event.target.name), "scaleX",Strong.easeOut,getChildByName(event.target.name).scaleX,.28,2,true);
var myTween2:Tween = new Tween(getChildByName(event.target.name), "scaleY",Strong.easeOut,getChildByName(event.target.name).scaleY,.28,2,true);
holder.addChild(getChildByName(event.target.name));
scrollPane.source = holder;
holder.getChildByName(event.target.name).x=Math.round(Math.random() * (470+Math.round(scrollPane.horizontalScrollPosition) - Math.round(scrollPane.horizontalScrollPosition))) + Math.round(scrollPane.horizontalScrollPosition);
holder.getChildByName(event.target.name).y=Math.round(Math.random() * (intMessageMaxY - intMessageMinY)) + intMessageMinY;
holder.getChildByName(event.target.name).addEventListener(MouseEvent.MOUSE_DOWN, selectMessage);
holder.getChildByName(event.target.name).addEventListener(MouseEvent.MOUSE_UP, releaseMessage);
} else {
event.target.x = startX;
event.target.y = startY;
}
//sortObjects();
addChild(scrollPane);
addChild(pinkline);
addChild(topShadowBox);
}
function selectMessage(event:MouseEvent):void{
if (activeGloveName != ""){
var activeGlove:DisplayObject = holder.getChildByName(activeGloveName);
activeGlove.filters = [myDropShadowFilterSmall];
activeGlove.scaleX = .28;
activeGlove.scaleY = .28;
holder.addChild(activeGlove);
}
activeGloveName = event.target.name;
//event.target.dragIt();
holder.addChild(holder.getChildByName(event.target.name));
event.target.filters = [new GlowFilter(0xABEEFC, .65, 15, 15, 1, 1, false, false)];
event.target.scaleX = .35;
event.target.scaleY = .35;
}
function releaseMessage(event:MouseEvent):void{
event.target.dropIt();
}
function sortObjects():void{
addChild(mcglovetarget);
addChild(scrollPane);
addChild(pinkline);
addChild(searchBox);
addChild(mcglove);
addChild(topShadowBox);
}
mcglove.buttonMode = true;
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn man sich die Fehler zurückzuverfolgen, die Fehler auftreten innerhalb von
Wenn man sich hier Sie finden heraus, dass scrollDrag ...
Ruft ab oder legt einen Wert fest, der angibt, ob ein Bildlauf durchgeführt, wenn ein Benutzer auf den Inhalt innerhalb des Bildlauffensters.
Du nie Inhalt in den scroll-Bereich
scrollPane.source = "...";
Ich glaube, das ist der Grund, warum die Fehler auftreten, versuchen Sie, einige Inhalte in die scrollpane, bevor Sie die horizontalScrollPosition.
Ich hatte das gleiche problem und herausgefunden, was Sie verursacht. Zumindest in meinem Fall, das problem war, dass die scrollpane war noch nicht ein Kind von der Bühne.
Dies bewirkt, dass die Fehlermeldung, die Sie beschreiben:
Während dies gut funktioniert:
Hoffe es hilft 🙂
horizontalScrollPosition ist eine Eigenschaft des ScrollPane, so dass Sie würde es durch
scrollPane.horizontalScrollPosition = 500;
anstelle des Aufrufs einer Methode.
Sollten Sie
ScrollPane
zustage
Erstens. WennscrollPane.stage == null
haben Sie solche Fehler.