Flash新手,请教AS3中在一个类中读取和改变另一个类中某变量的问题。
package{importflash.display.Sprite;publicvar_a:uint=1;//1、在Main里定义一个变量_a。publicclassM...
package
{
import flash.display.Sprite;
public var _a:uint=1;//1、在Main里定义一个变量_a。
public class Main extends Sprite
{
pubilc function Main():void
{
}
}
}
package
{
import flash.display.Sprite;
public class LeiA extends Sprite
{
pubilc function LeiA():void
{
//2、请问如何让类LeiA读取Main中变量_a的值?
//3、然后将Main中变量_a的值改为2?
}
}
} 展开
{
import flash.display.Sprite;
public var _a:uint=1;//1、在Main里定义一个变量_a。
public class Main extends Sprite
{
pubilc function Main():void
{
}
}
}
package
{
import flash.display.Sprite;
public class LeiA extends Sprite
{
pubilc function LeiA():void
{
//2、请问如何让类LeiA读取Main中变量_a的值?
//3、然后将Main中变量_a的值改为2?
}
}
} 展开
4个回答
展开全部
Main是不是文档类(主类)?是的话你就不能这样写new Main(),它应该作为单例而存在。
教你一招绝的,先给Main创建静态的自身对象,并在 Main的构造函数里让它指向 "this",然后就可以通过这个自身对象直接操作本Main实例的任何公开(public)的属性了。
package
{
import flash.display.Sprite;
public var _a:uint=1;
//
public static var instance:Main;//第1步:创建静态的自身对象
//
public class Main extends Sprite
{
pubilc function Main():void
{
instance = this; //第2步:在构造函数里让它指向this(也就是本Main类的实例)
}
}
}
然后你就可以在任何类文件的任何地方这样写:
Main.instance._a = 2;
比如
package
{
import flash.display.Sprite;
public class LeiA extends Sprite
{
pubilc function LeiA():void
{
trace( Main.instance._a);//现在是1
Main.instance._a = 2;
trace( Main.instance._a); //现在是2
}
}
}
教你一招绝的,先给Main创建静态的自身对象,并在 Main的构造函数里让它指向 "this",然后就可以通过这个自身对象直接操作本Main实例的任何公开(public)的属性了。
package
{
import flash.display.Sprite;
public var _a:uint=1;
//
public static var instance:Main;//第1步:创建静态的自身对象
//
public class Main extends Sprite
{
pubilc function Main():void
{
instance = this; //第2步:在构造函数里让它指向this(也就是本Main类的实例)
}
}
}
然后你就可以在任何类文件的任何地方这样写:
Main.instance._a = 2;
比如
package
{
import flash.display.Sprite;
public class LeiA extends Sprite
{
pubilc function LeiA():void
{
trace( Main.instance._a);//现在是1
Main.instance._a = 2;
trace( Main.instance._a); //现在是2
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-05
展开全部
通过Main类的实例来访问它里面的变量_a
如:
var m:Main = new Main();
trace(m._a);
m._a = 2;
trace(m._a);
如:
var m:Main = new Main();
trace(m._a);
m._a = 2;
trace(m._a);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好用 get()方法 set() 读取与更改值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
声明的时候将Main当一个参数传到LeiA里,
而LeiA类的构造函数需要增加Main类的参数,如
package
{
import flash.display.Sprite;
public class LeiA extends Sprite
{
protected var main:Main;
pubilc function LeiA(main:Main):void
{
this.main = main;//将main记录,在其它函数都可以访问main以得到主类的可访属性与方法
this.main._a=2;//修改了main的参数_a
}
}
}
此时,在
Main中
pubilc function Main():void
{
new LeiA(this);//声明类LeiA时传Main进去
}
还有一种方法处理,就是使用静态变量来代替变量_a,那么在任何一个类中,将静态变量_a更改即可更改了变量_a
而LeiA类的构造函数需要增加Main类的参数,如
package
{
import flash.display.Sprite;
public class LeiA extends Sprite
{
protected var main:Main;
pubilc function LeiA(main:Main):void
{
this.main = main;//将main记录,在其它函数都可以访问main以得到主类的可访属性与方法
this.main._a=2;//修改了main的参数_a
}
}
}
此时,在
Main中
pubilc function Main():void
{
new LeiA(this);//声明类LeiA时传Main进去
}
还有一种方法处理,就是使用静态变量来代替变量_a,那么在任何一个类中,将静态变量_a更改即可更改了变量_a
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询