MeshFilterは何を濾過する?

このQ&Aのポイント
  • MeshFilterは何を濾過しますか?
  • MeshFilterはどのような役割を持っていますか?
  • MeshFilterに関して教えてください
回答を見る
  • ベストアンサー

MeshFilterは何を濾過する?

unity で「あさって」な質問なのですが、例えば以下のように使われる「MeshFilter」ですが、Filterというと日本語では「濾過(ろか)器」とか「こし器」の意味じゃないですか。 では、MeshFilterは何を濾過しますか?(何を濾過しているイメージですか?) 下の例では、作成したメッシュをsharedMeshプロパティにセットしているだけで、「何かをこしている」感じはしないのですが・・・。 すみません、初心者なもので、概念的なところを教えていただければ、ありがたいです。 よろしくお願いします。 using UnityEngine; [RequireComponent (typeof(MeshRenderer))] [RequireComponent(typeof(MeshFilter))] public class OneTriangle : MonoBehaviour { [SerializeField] private Material mat; void Start() { var mesh = new Mesh(); mesh.vertices = new Vector3[] { new Vector3 (0, 1f), new Vector3 (1f, -1f), new Vector3 (-1f, -1f), }; mesh.triangles = new int[] { 0, 1, 2 }; mesh.colors = new Color[] { Color.white, Color.red, Color.green }; mesh.RecalculateNormals(); var filter = GetComponent<MeshFilter>(); filter.sharedMesh = mesh; var renderer = GetComponent<MeshRenderer>(); renderer.material = mat; } }

noname#249180
noname#249180

質問者が選んだベストアンサー

  • ベストアンサー
  • skp026
  • ベストアンサー率45% (1011/2238)
回答No.1

コードではなく、開発環境でオブジェクトの配置をしてみると、今回の「Unityの設計思想」のようなものはイメージしやすいかもしれません。 以下はドットインストールさんのUnity入門です。 https://dotinstall.com/lessons/basic_unity_v2 CubeなどGameObjectを配置すると、Inspectorにそのオブジェクトの詳細が表示されます。そしてInspectorのMeshには、Cube(MeshFilter)と表示されています。 ここからは設計思想の推測となりますが、「形あるものを作成する際、その形状を決定するものがMeshFilter」ということではないかと考えます。 例えばMeshFilterをCube(立方体)から、Sphere(珠)にすれば形状が変化させられます。 つまり、まだ形がさだまっていないものに、そのフィルターを通すことで任意の形状に変化できる、ということのように感じます。 ※ Unityとは異なる環境で3Dの描画の開発経験がある場合は、全てコードによる学習のほうが理解しやすいかもしれません。そうでなかったり、設計思想を理解したい場合は、Unityは画面での設計やデザインができることも特色となっていますので、コードと画面の両方を試すと、設計思想はイメージしやすいと思いました。 以上、参考にならなかったらごめんなさい。

noname#249180
質問者

お礼

ご回答ありがとうございます。 なるほど。 エディタでMeshFilterをCubeからSphereにすれば形状が変化させられることから、「まだ形がさだまっていないものに、そのフィルターを通すことで任意の形状に変化させることができる」ということでは、ということですね。 是非参考にさせていただきます。 分かりやすくご説明いただき、ありがとうございました。 ※そうですね、エディタの方も色々触ってみます。

関連するQ&A

  • UnityC#の質問です!

    プログラミング初心者です。 ブロックを5*9で並べるスクリプトなのですが。 using UnityEngine; using System.Collections; public class SceneControl : MonoBehaviour { public static int BLOCK_NUM_X = 9; public static int BLOCK_NUM_Y = 5; public GameObject BlockPrefab = null; public BlockControl[,] blocks; void Start() { // ブロックを生成、配置する. this.blocks = new BlockControl[BLOCK_NUM_X, BLOCK_NUM_Y]; int color_index = 0; for(int y = 0;y < BLOCK_NUM_Y;y++) { for(int x = 0;x < BLOCK_NUM_X;x++) { //BlockPrefabをGameobjectにキャストする GameObject game_object = Instantiate(this.BlockPrefab) as GameObject; BlockControl block = game_object.GetComponent<BlockControl>(); this.blocks[x, y] = block; // Vector3 position = block.transform.position; position.x = -(BLOCK_NUM_X/2.0f - 0.5f) + x; position.y = -0.5f - y; block.transform.position = position; block.SetColor((BlockControl.COLOR)color_index); // color_index = Random.Range(0, (int)BlockControl.COLOR.NORMAL_COLOR_NUM); } } // } } で、 Vector3 position = block.transform.position; position.x = -(BLOCK_NUM_X/2.0f - 0.5f) + x; position.y = -0.5f - y; block.transform.position = position; の部分についてなのですが、Vector3 position = block.transform.position;で参照を渡しているので、block.transform.position = position;が必要ないと思い、コメントアウトした所、同じ位置にブロックが生成されてしまいました。 参照を渡していいるため position.x = -(BLOCK_NUM_X/2.0f - 0.5f) + x; position.y = -0.5f - y; の部分で、block.transform.positionの中身が書き換わっていると思ったのですが違うのですか??

  • 三角形ABCのBを可変にしたい

    お世話になります。 Actionscript 3.0で作成しております。 点ABCがあり、点Bをモーショントゥイーンで横に動かしています。 下記のActionScriptで点ABCを結んだ三角形を表示しているのですが、 点Bをモーショントゥイーンで動かしても三角形が変化してくれません。 希望する形としては、点Bが動く度に、三角形ABCを書き直す(?) Bが移動した形になって欲しいのですがどのようにしたらよいでしょうか? ///////////////////// import flash.display.Shape; var shape:Shape=new Shape(); shape.graphics.beginFill(0xFF0000); //頂点の座標 var vertices:Vector.<Number>=Vector.<Number>([点A.x,点A.y,点B.x,点B.y,点C.x,点C.y]); shape.graphics.drawTriangles(vertices); shape.graphics.endFill(); addChild(shape); ///////////////////// お手数ですが何卒よろしくお願い致します。

    • ベストアンサー
    • Flash
  • このスクリプトにアレンジを加えたいのですが...。

    イラストレーターに貼り付けた画像をフォトショップで適した解像度に修正してくれるスクリプトなのですが、どなたかこのスクリプトをどうにか Photoshopの画像解像度の「スタイルを拡大・縮小」と「縦横比固定」と「画像の再サンプル」すべてにチェックを入れた状態で起動するようにアレンジしていただけないでしょうか? (現状だとスタイルを拡大・縮小にチェックが入っていないようで画像に レイヤー効果が使用されていると不具合が生じます。) (illustratorでリンク画像を選択→ExtendScript Toolkitでスクリプト起動→Photoshopで画像変換) なおこのスクリプトのソース元は ttp://d.hatena.ne.jp/kamiseto/20090610/1244628779 です。 #include 'c.js';//http://svn.coderepos.org//share/platform/illustrator/javascript/lib/c.js #include 'matrixConvert.jsx';//http://d.hatena.ne.jp/kamiseto/20090502/1241251512 #target 'illustrator'; (function(){ var default_reso = 350; var reso = prompt ('解像度(pixel/inch)とを数字で入力してください。不正な文字が入力された場合はデフォルトの350pixel/inchで計算します。', 350, '解像度(pixel/inch)となる数字を入力して下さい。')*1; if(reso == 0 || typeof reso !== 'number')reso = default_reso; //Photoshop Resize Image Function function ResizeImage(file,hs,vs,reso){ open(File(file)); var myDoc = app.activeDocument; var hasClippingPath = (function(){ for(i=0;i<app.activeDocument.pathItems.length;i++)if(app.activeDocument.pathItems[i].kind == PathKind.CLIPPINGPATH)return true; return false; })(); var isPSD = (function(){ var f = new File(app.activeDocument.fullName); f.open('r'); var h = (f.read('4')); f.close(); return h == '8BPS' ? true : false; })(); if(isPSD && hasClippingPath){ hs = hs*(myDoc.resolution/72); vs = vs*(myDoc.resolution/72); } myDoc.resizeImage (UnitValue((myDoc .width.as('pixel'))*hs*reso/myDoc.resolution,'pixel'), UnitValue((myDoc .height.as('pixel'))*vs*reso/myDoc.resolution,'pixel'),reso, ResampleMethod.BICUBICSHARPER); } // function FinalImageSize(ImgObj){ var info = getPlacedItemInfo(ImgObj); if(info['type'] == 'PDF')return; if(info['type'] == 'EPSF' && info['creator'].match(/Photoshop/) != 'Photoshop')return false; var mat = matrixConvert.getAll(ImgObj); // if(0.7 < ((mat.hs*mat.vs)/10000) && ((mat.hs*mat.vs)/10000) < 1.3)return; try{ var bt=new BridgeTalk(); bt.target = 'photoshop'; bt.body = uneval (ResizeImage)+"('"+ImgObj.file+"',"+mat.hs/100+","+mat.vs/100+","+reso+");"; bt.onError = function (btObj) {alert( btObj.body + " (" + btObj.headers ["Error-Code"] + ")" ); }; bt.send(); }catch(e){ throw(e); } } function getPlacedItemInfo(pi){ if(pi.file.exists){ var info = { 'type' :'', 'creator' : '', 'color' : '' }; var f = new File(pi.file); var g = ""; var header = ""; f.open('r'); switch(g = f.read(4)){ case '8BPS' : f.seek(0,0); /* while(header = f.readln()){ if(header)tmph = header; }; f.seek((-1*tmph.length)-8,1); */ info['type'] = 'PSD'; break; case '%!PS' : f.seek(0,0); var header = (f.read(1000)); info['type'] = 'EPSF'; //Creator if(creator = header.match (/%%Creator:(.+)/))info['creator'] = creator[1]; //Duotobe if(duotone = header.match(/%%DocumentCustomColors: \((.+)\)/))info['color'] =duotone[1]; //CMYK or GrayScales if(colors = header.match (/%%DocumentProcessColors:\s(.+)/))info['color'] = colors[1]; break; case '%PDF' : info['type'] = 'PDF'; //break; default : /* f.seek(0,0); //$.writeln(g); while(header = f.readln()){$.writeln(header);} */ break; } f.close(); } return info; } c("S").filter("placedItems").each(FinalImageSize); //FinalImageSize(app.activeDocument.placedItems[0]); })();

  • unityでのC++エラーの原因がわかりません!!

    最近unity2dで横スクロールアクションを勉強していて 今移動するなどのアニメーションを動かそうとしています しかし待機状態から移動するときのアニメーションに移行するスクリプトがうまくいきません 誰か教えてください error CS0411: The type arguments for method `UnityEngine.Component.GetComponent<T>()' cannot be inferred from the usage. Try specifying the type arguments explicitlyというエラーが出ます プログラムはこんな感じです using UnityEngine; using System.Collections; [RequireComponent(typeof(Rigidbody2D))] [RequireComponent(typeof(BoxCollider2D))] public class UnityChanController : MonoBehaviour { public Rigidbody2D cRigidbody2D { get { if(!_cRigidbody2D) _cRigidbody2D = rigidbody2D; return _cRigidbody2D; } } Rigidbody2D _cRigidbody2D; public Transform cTransform { get { if(!_cTransform) _cTransform = transform; return _cTransform; } } Transform _cTransform; public Animator cAnimator { get { if(!_cAnimator) _cAnimator = GetComponent(); return _cAnimator; } } Animator _cAnimator; public float moveSpeed = 5; public float jumpForce = 1000; float InputHorValue; bool isGrounded; bool canJump; void Update() { MecCheck(); InputCheck(); } void InputCheck() { InputHorValue = Input.GetAxisRaw("Horizontal"); if(isGrounded && Input.GetButtonDown("Jump")) canJump = true; } void MecCheck() { bool isRunning = InputHorValue != 0; cAnimator.SetBool("isRunning",isRunning); } void FixedUpdate() { Move(); Jump(); } void Move() { if((cTransform.localScale.x > 0 && InputHorValue < 0) || (cTransform.localScale.x < 0 && InputHorValue > 0)) { Vector2 temp = cTransform.localScale; temp.x *= -1; cTransform.localScale = temp; } cRigidbody2D.velocity = new Vector2(moveSpeed * InputHorValue, cRigidbody2D.velocity.y); } void Jump() { if(canJump) { canJump = false; isGrounded = false; cRigidbody2D.AddForce(Vector2.up * jumpForce); } } void OnCollisionEnter2D(Collision2D col) { if(col.gameObject.tag == "Ground") isGrounded = true; } }

  • Java3D 座標の値を入力し点を表示させるには

    Java3D 座標の値を入力することにより点を表示させたいです。そのために下記のように主な部分のソースコードを作成しました。どこをどうすればよいでしょう教えてください! public class Test extends Applet{ boolean isStandalone=false; Canvas3D canvas=null; SimpleUniverse universe=new SimpleUniverse(canvas); BranchGroup scene=createSceneGraph(); BranchGroup root3=new BranchGroup(); TransformGroup trans3=new TransformGroup(); float x; float y; float z; Vector3f pointposition = new Vector3f(0.0f, 0.0f, 0.0f); TuplePanel bgpanel=new TuplePanel(pointposition) public Test(){ this(false); } public Test(final boolean isStandalone){ this.isStandalone = isStandalone; this.setLayout(new BorderLayout()); Panel panel=new Panel(); this.add(panel,BorderLayout.NORTH); bgpanel.addTupleEventListener(new TupleEventListener(){   public void tupleStateChanged(TupleEvent e){ pointposition=e.getVector3f(); Transform3D t3d = new Transform3D(); t3d.setTranslation(pointposition); trans3=new TransformGroup(t3d); Point3f[] po3=new Point3f[1]; po3[0]=new Point3f(pointposition); PointArray ge3=new PointArray(po3.length, GeometryArray.COORDINATES | GeometryArray.COLOR_3); ge3.setCoordinate(0,po3[0]); Appearance appp3=new Appearance(); Shape3D gggrid3=new Shape3D(ge3,appp3); gggrid3.setGeometry(ge3); trans3.addChild(gggrid3); } }); panel.add(bgpanel); Button addbutton = new Button("Add"); addbutton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e) { universe.getLocale().removeBranchGraph(scene); scene.addChild(trans3); universe.addBranchGraph(scene); } }); panel.add(addbutton); } @Override public void init() { GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration(); ・・・ BranchGroup scene=createSceneGraph(); universe.addBranchGraph(scene); } private BranchGroup createSceneGraph(){ root3.setCapability(BranchGroup.ALLOW_DETACH); root3.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE); trans3.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); trans3.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); BoundingSphere bounds3 = new BoundingSphere(new Point3d(),100.0); ・・・ double[] vertices3= {0.65,0.00,0.05,//X軸 ・・・ }; float[] colorP3={0.0f,0.0f,0.0f               ・・・}; LineArray eom3=new LineArray(vertices3.length, GeometryArray.COORDINATES|GeometryArray.COLOR_3); eom3.setCoordinates(0,vertices3); eom3.setColors(0,colorP3); LineAttributes attr3=new LineAttributes(); attr3.setLineWidth(3.0f); Appearance p3=new Appearance(); p3.setLineAttributes(attr3); Shape3D rid3=new Shape3D(eom3,p3); rid3.setCapability(Shape3D.ALLOW_GEOMETRY_READ); trans3.addChild(rid3); Point3f[] po3=new Point3f[1]; po3[0]=new Point3f(x,y,z); float[] colorPo3={1.0f,0.0f,0.0f}; final PointArray ge3=new PointArray(po3.length, GeometryArray.COORDINATES | GeometryArray.COLOR_3); ge3.setCoordinate(0,po3[0]); ge3.setColors(0,colorPo3); Appearance appp3=new Appearance(); appp3.setCapability(Appearance.ALLOW_POINT_ATTRIBUTES_READ); appp3.setCapability(Appearance.ALLOW_POINT_ATTRIBUTES_WRITE); PointAttributes ppo3=new PointAttributes(); ppo3.setPointSize(25.0f);      appp3.setPointAttributes(ppo3); Shape3D gggrid3=new Shape3D(ge3,appp3); gggrid3.setCapability(Shape3D.ALLOW_GEOMETRY_READ); gggrid3.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE); trans3.addChild(gggrid3); return root3; }

  • Unityの質問です。

    ボタンを押すと、キャラクターの真後ろにオブジェクトが出現するようにしたいのですが、 using UnityEngine; using System.Collections; [ExecuteInEditMode()] public class GUIController : MonoBehaviour { public CharacterController characterController; public GameObject character; public GameObject domino; private Vector3 objPosition; // Use this for initialization void Start () { objPosition = new Vector3 (0, 0, 0); } void OnGUI(){ if(GUI.Button(new Rect(600, Screen.height - 160, 120, 120), "おす")){ Debug.Log("ぼたん"); float x = characterController.transform.localPosition.x; float y = characterController.transform.localPosition.y + 0.5f; float z = characterController.transform.localPosition.z - 0.64f; objPosition.Set(x, y, z); Debug.Log (x+","+y+","+z); GameObject domino_prefab = (GameObject)Instantiate(domino,objPosition, characterController.transform.rotation); } } } こうしてみたのですが、うまくキャラクターの真後ろにオブジェクトが出てきてくれません。 どなたか助けてください!

  • Javascriptで複数のjsonを読み込みたい

    Javascriptについてご教授頂きたい点があり、質問しました。 私事で、現在とあるサイトの修正を行なっています。そのサイト内の更新情報の部分がJavascriptで制作されており、具体的にはjson形式のファイルをJavascriptで読み込み、HTMLとして出力する形になっています。 質問下部が、そのJavascriptです。 現在はjsonファイルをひとつだけの読み込んで表示しているのですが、 今後コンテンツの拡充するため、2種類のjsonを読み込む必要がでてきました。 jsonファイルの中身や項目ついては2種類ともほぼ同じような内容です。 考えられる様々な方法を試してみたのですが、うまくいかず、質問させていただきました。 どなたかお力添えを頂けないでしょうか。 var result2 = ''; var rec2 = 5; var jsonHostname = "元々のJSONのディレクトリURL"; var jsonUrl = ''; jsondata2 = ""; function callback_whats_new(data2) {callbackCommon2(data2);} function callbackCommon2(data2) { jsondata2 = data2; if(typeof jsondata2 == 'object'){ draw2(); } else { indexDiv2.innerHTML = '<br><div class="t_m" style="text-align:left; margin-left:8px;">当サイトをご覧いただくには、<br>JavaScriptとFlashの再生環境が必要となります。<br><br>' + '詳しくは「<a href="">ご利用に際して</a>」をご覧ください。<br><br></div>'; } } function getIndex2(n2) { var list = n2; var type = list; indexDiv2 = document.getElementById(type); filename = type; var url = jsonHostname + filename + '.json?' + (new Date().getTime()); 元々入っていたjsonファイルののURL var idval = 'jsonp_' + type; var charset = 'utf-8'; charset = charset ? charset : 'utf-8'; var headObj = document.getElementsByTagName('head')[0]; var scriptTag = document.getElementById(idval); if (scriptTag) { headObj.removeChild(scriptTag); } scriptTag = document.createElement('script'); scriptTag.type = 'text/javascript'; scriptTag.id = idval; scriptTag.charset = charset; scriptTag.src = url; headObj.appendChild(scriptTag); } function draw2(e,n1, n2, n3, n4) { result2=""; if (typeof n1 != 'undefined') turn = n1; if (typeof n2 != 'undefined') cat_2 = n2; if (typeof n3 != 'undefined') category = n3; hl = jsondata2.headline; if(typeof rec2!='number'){ hlLength = hl.length; }else if(rec2 > hl.length){ hlLength = hl.length; }else{ hlLength = rec2; } tMon = 0; for (var i = 0; i < hlLength; i++) { wrHTML2(i); } if (result2) { indexDiv2.innerHTML = result2; } else { indexDiv2.innerHTML = '<span class="t_m">該当する情報はありません。</span>\n'; } if (typeof list == 'object' && listNum < list.length) getIndex2(list); } function wrHTML2(n) { var f = 0; var f2 = 0; var icon=""; var date = (jsondata2.headline[n].date) ? jsondata2.headline[n].date : ""; if (cat_2 && cat_2 != Number(date.substr(4,2))) return; var uri = (jsondata2.headline[n].uri.uri) ? jsondata2.headline[n].uri.uri : ""; var tar = jsondata2.headline[n].uri.target; var no = jsondata2.headline[n].txt.no; var txt = (jsondata2.headline[n].txt.txt) ? jsondata2.headline[n].txt.txt : ""; var jsOpenWinFlg; if (-1!= uri.indexOf("/html/")){ if (-1!= (jsOpenWinFlg = uri.indexOf("/report/"))){ var aElementAttr = 'href="JavaScript:popupWin(\''+uri+'\',\'subwin\',\'900\',\'700\');"'; }else if (-1!= (jsOpenWinFlg = uri.indexOf("/news/other/"))){ var aElementAttr = 'href="JavaScript:popupWin(\''+uri+'\',\'subwin\',\'900\',\'700\');"'; }else{ var aElementAttr = 'href="'+uri+'" target="'+tar+'"'; } }else{ var aElementAttr = 'href="'+uri+'" target="'+tar+'"'; } if (date) date = date.substr(2,2) + '/' + date.substr(4,2) + '/' + date.substr(6); result2 += '<table width="100%"><tr>'; result2 += '<td width="17%" valign="top">' + date + '</td>'; result2 += '<td width="83%" valign="top">'; result2 += '<a ' + aElementAttr + '>' + txt + '</a>'; result2 += '</td>'; result2 += '</tr></table>'; } ​

  • FLASHの出力エラーについて

    FLASHの出力エラーの原因がわかりません。 プレビューを押したとき ArgumentError: Error #2004: パラメータの 1 つが無効です。 at flash.display::Graphics/drawRect() at _fla::MainTimeline/xClick() とでてしまいます。 詳しい方、ご教授お願い致します。 ↓アクションスクリプトです add_btn.addEventListener(MouseEvent.CLICK, xClick); function xClick(evt) { var num1:Number = Number(in1_txt.text); var num2:Number = Number(in2_txt.text); var h:Number; if (num1 < 18) { h = 60; } else if ((num1 >= 18) && (num1 < 20)) { h = 50; } else if ((num1 >= 20) && (num1 < 23)){ h = 40; } var black:Number; if (num1 < 18) { black = (0xb0c4de); } else if ((num1 >= 18) && (num1 < 20)) { black = (0x8e9db2); } else if ((num1 >= 20) && (num1 < 23)) { black = (0x66707f); } else if ((num1 >= 23) && (num1 < 26)) { black = (0x232933); } else if(num1 > 25) { black = (0x232933); } var iro:Number; if (num1 < 18) { iro = 0.3;; } else if ((num1 >= 18) && (num1 < 20)) { iro = 0.4; } else if ((num1 >= 20) && (num1 < 23)){ iro = 0.5; }else if (num1 >50){ iro = 1.0; } var color:Number; if ((num2 >= 18) && (num2 <=25)){ color = (Math.random() * 0xffffff); } else if ( (num2 >=40) && (num2 <= 50)) { color = (0x999966); } else if(num1 > 50){ color = (0x996633); } else { color = (Math.random() * 0xffffff); } var k:Number; if ((num1 >= 23) && (num1 < 25)) { var mae:Shape=new Shape(); mae.graphics.beginFill(color); mae.alpha = 0.5; mae.graphics.drawRect(645 ,410, 310, 30); mae.graphics.endFill(); addChild(mae); for( y = 455 ; y <= 770 ; y = y + 255 ) { var ye:Shape=new Shape(); ye.graphics.beginFill(black); ye.graphics.drawRect(645 ,y, 310, 35); ye.graphics.endFill(); addChild(ye); } for( y = 505 ; y <= 700 ; y = y + 55 ) { var shima:Shape=new Shape(); shima.graphics.beginFill(color); shima.alpha = 0.5; shima.graphics.drawRect(645 ,y, 310, 28); shima.graphics.endFill(); addChild(shima); } } var m:Number; if (num1 >= 25) { var bod:Shape=new Shape(); bod.graphics.beginFill(color); bod.alpha = 0.5; bod.graphics.drawRect(645 ,410, 310, 10); bod.graphics.drawRect(645 ,490, 310, 10); bod.graphics.drawRect(645 ,660, 310, 20); bod.graphics.drawRect(645 ,685, 310, 5); bod.graphics.endFill(); addChild(bod); for( y = 430 ; y <= 700 ; y = y + 265 ) { var rec:Shape=new Shape(); rec.graphics.beginFill(black); rec.graphics.drawRect(645 ,y, 310, 50); rec.graphics.endFill(); addChild(rec); } for( y = 500 ; y <= 655 ; y = y + 40 ) { var ran:Shape=new Shape(); ran.graphics.beginFill(color); ran.alpha = 0.5; ran.graphics.drawRect(645 ,y, 310, Math.random()*30); ran.graphics.endFill(); addChild(ran); } }

  • Flash CS3(AS3)でRSSを読み込んでみたんですが

    Flash CS3(AS3)でRSSを読み込んでみたんですが プレビューでは上手く表示できるのに出力されたファイルからはRSSが表示できません 記述ミス等の原因があるなら教えていただきたいm( )m --------------以下AS3の内容です------------------------------------------ var xml:XML; var txtField:TextField; var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, onLoaded); loader.load(new URLRequest("http://www.hiranoaya.com/cgi-bin/diary/sfs6_diary_rss.cgi")); var txtFormat:TextFormat = new TextFormat(); txtFormat.color = 0x666666; txtFormat.leftMargin = 0; txtFormat.font = "arial"; txtField = new TextField(); txtField.width = 300; txtField.height = 350; txtField.wordWrap = true; txtField.selectable = true; txtField.multiline = true; txtField.defaultTextFormat = txtFormat; txtField.background =true; txtField.backgroundColor = 0xF5F5F5; addChild(txtField); function onLoaded(e:Event):void { var xml = new XML(e.target.data); var ns:Namespace = new Namespace("http://purl.org/rss/1.0/"); var ns_dc:Namespace = new Namespace("http://purl.org/dc/elements/1.1/"); var date=xml.ns::item[i].ns_dc::date; date=date.substr(6, date.length - 15).replace("-","月").replace("T","日"); txtField.htmlText +="綾魂RSS"; for (var i:uint = 0; i < 3; i++) { txtField.htmlText += "<br><a href='" + xml.ns::item[i].ns::link + "'><b>" + xml.ns::item[i].ns::title + "</b><br>" + date +"<br>" + xml.ns::item[i].ns::description + "</a>"; } }

    • ベストアンサー
    • Flash
  • 動的セレクトボックスのSelectedについて

    以下のように、動的セレクトボックスを作りました。これ自体は問題なく動くのですが、selectedの指定方法がわかりません。例えば、ページ表示に「東京都」と「中央区」を選択している状態にしたいです。よろしくお願いいたします。 <html> <head> <script type="text/javascript"><!-- function SelectOption(parentValue, text, title, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; this.title = title; if(style) { this.style.cssText = style; } }; return this; } function SelectBox(id) { function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } var options = []; this.registOption = function(option) { options[options.length] = option; }; var child = null; this.setChild = function(childObj) { child = childObj; }; this.make = function(parentValue) { var obj = getObject(); if(obj) { obj.options.length = 0; var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } if(child) { child.make(obj.value); } } }; return this; } var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "都道府県", "1")); box1.registOption(new SelectOption(null, "神奈川県", "都道府県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "区市町村", "1")); box2.registOption(new SelectOption("1" , "中央区" , "区市町村", "2")); box1.setChild(box2); window.onload = function() { box2.make("1"); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2"></select> </select> </form> </body> </html>

専門家に質問してみよう