• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FlashMXのeval()関数を使って数式(文字列)を評価)

FlashMXのeval()関数で数式を評価する方法

このQ&Aのポイント
  • FlashMXのeval()関数を使って、文字列で書かれた数式を評価することはできない。
  • 例えば、var x = 0; var y = 0; var theString = 'Math.cos(x) + Math.cos(y)'; var result = eval(theString); というスクリプトを実行しても、resultには'Undefined'が入る。
  • 数式を入力してもらって、その数式をグラフ化するモノを作りたいが、FlashMXのeval()関数ではそれはできない。

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

  • ベストアンサー
  • NORIHIRO
  • ベストアンサー率77% (7/9)
回答No.1

参考程度に回答させて頂きます。 FLASHのヘルプのeval関数の頁にも記載がありますがeval関数の機能・目的は「関数; 変数、プロパティ、オブジェクト、ムービークリップに名前でアクセスすること」です。よって数式までは実行できないと思います。あくまでも動的にインスタンス名や変数を作成した場合などに使用するものなのではないでしょうか? 以上

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • eval() 関数の代替関数を教えてください。

    eval() 関数の代替関数を教えてください。 [現在] var x = 5; var y = eval('x + 3'); // eval() 関数 console.log("y=", y); // 8 [代替] var x = 5; var y = □□□□□□□□□□ // 代替関数 console.log("y=", y); // 8

  • 関数の問題について、数式を教えて下さい。

    関数 y=1/2x2 のグラフ上に点Aと点Pがあり、点Aのx座標が-4、点Pのx座標が6である。 2点A、Pを通る直線がy軸と交わる点をQとする時 (1)点Qのy座標を求めなさい。(途中計算もお願いします) (2)線分AQと線分PQの長さの比を求めなさい。 以上の、数式をわかりやすく教えていただけると助かります。

  • Excel関数で、長さ0の文字列(

    Excelで、両軸対数の散布図(X列,Y列)を作成していますが、X列,Y列ともに、データがない部分があります。 X,Yともに他のデータの関数になっており、 データが不適格の場合、空白セルを入力しています。 しかし、空白セルとして、("")を入力すると、 X,Yの散布図が、散布図にならず、困っています。 具体的には、 IF(Y>0, Log(Y),"") といった感じです。 恐らく、空白セルが長さ0の文字列("")と解釈されているからだと思います。 このセルをDeleteで削除すると、グラフはうまく表示されるようですが、それでは、関数が機能しません。 そこで、関数の出力で、完全な空白セルをセルの値にする方法を教えてください。

  • flashMX ActionScript

    こんにちは、 flashMXのActionScriptを勉強しています。 onClipEvent (enterFrame) { K1 += (K>=360) ? -360 : 10; K2 += (K>=360) ? -360 : 30; //0~360度まで0.2ずつ角度Kを増加 rad1 = K1*Math.PI/180; rad2 = K2*Math.PI/180; //ラジアンに変換 this._x = xPos+200*Math.cos(rad1); this._y = yPos+100*Math.cos(rad2); //それぞれの書く速度に応じて半径200と100の範囲で移動する } 上のスクリプトの K1 += (K>=360) ? -360 : 10; の部分の意味が理解できません。 特に?の記号。 お分かりの方がいましたら教えてください。 よろしくお願いします。

  • classを作ったのに動きません。

    現在classについて勉強中なのですが、自分の書いたスクリプトで実行すると「classを読み込めませんでした」とのエラーが帰ってきます。 何が原因なのか探してみたのですが、いまだにわかりません。 わかる方は教えていただけないでしょうか? ちなみに下に書いてあるスクリプトはclassとそれを動かす新規ファイル「rotation.fla」の1フレーム目に記述したものです。 ステージにはムービークリップ「bar_mc」と「center_mc」が置かれています。 //MyClass01クラス class MyClass01 { var mc:MovieClip; function MyClass01(target:MovieClip) { mc = target; } function circle(x:Number, y:Number, r:Number, d:Number):Void { mc._rotation += d; var rad = mc._rotation * Math.PI / 180; mc._x = x + r * Math.cos(rad); mc._y = y + r * Math.sin(rad); } } rotation.flaの1フレーム目 var barObj:MyClass01 = new MyClass01(bar_mc); bar_mc.onEnterFrame = function() { var x = center_mc._x; var y = center_mc._y; var r = 100; var d = 10; barObj.circle(x, y, r, d); };

    • ベストアンサー
    • Flash
  • 三角関数・方程式

    度々質問すみません。 高2なりたての者です。 三角方程式(関数?)の問題です。 0°≦ x ≦360°のとき y=sinxとy=2cos3xのグラフより、方程式sinx=2cos3xは ■個の解を持つことがわかる。 この■に当てはまるのを答える問題なのですが、 意味がよくわかりません; y=sinxとy=2cos3xのグラフを書いて 交わるところが解なのでしょうか? この問題に関係している前の部分の問題では y=2cos3xの周期のうち正で最小のものは■°である。 0°≦ x ≦360°のときy=2cos3xにおいてy=2となるxは■個、 y=-2となるxは■個ある。 という問題があります。 この3つは (1)2π×1/3=2π/3=120° (2)4個(グラフを書いて求めました) (3)3個(グラフを書いて求めました) と解けたのですが、 sinx=2cos3xのときの解の個数というのが よく意味がわかりません; 考え方やアドバイスをいただけると嬉しいです; 宜しくお願いします。

  • flashで円の描画。

    長文失礼します。 FLASH,CS3でActionScript2.0で作業しています。 FLASHで複数の円を重ねて円グラフの様な描画をしたくて、ネット上にあったソースを自分で少しいじりました。 しかし複数の円を描画しようとすると他の円が消えてしまいます。 外部に円を描画するスクリプト(DrawArc.as)がおいてあります。 //DrawArc.as class DrawArc { var mc:MovieClip; function DrawArc(target:MovieClip) { mc = target; } function drawLine(x:Number, y:Number, radius:Number, arc:Number, startAngle:Number, thickness:Number, color:Number, alpha:Number, yRadius:Number) { mc.clear(); mc.lineStyle(thickness,color,alpha,false,"none","none"); mc.moveTo(x,y); if (arguments.length<8) { return; } if (yRadius == undefined) { yRadius = radius; } if (Math.abs(arc)>360) { arc = 360; } var segs = Math.ceil(Math.abs(arc)/45); var segAngle = arc/segs; var theta = -(segAngle/180)*Math.PI; var angle = -(startAngle/180)*Math.PI; var ax = x-Math.cos(angle)*radius; var ay = y-Math.sin(angle)*yRadius; if (segs>0) { for (var i = 0; i<segs; i++) { angle += theta; var angleMid = angle-(theta/2); var bx = ax+Math.cos(angle)*radius; var by = ay+Math.sin(angle)*yRadius; var cx = ax+Math.cos(angleMid)*(radius/Math.cos(theta/2)); var cy = ay+Math.sin(angleMid)*(yRadius/Math.cos(theta/2)); mc.curveTo(cx,cy,bx,by); } } } } そしてFLASHのフレーム内に import DrawArc; mc = new DrawArc(this); targetNum = 0; onEnterFrame = function () { if (targetNum<=220) { targetNum += 2; change(); } else { delete this.onEnterFrame; } }; function change() { mc.drawLine(Stage.width/2,65,40,-targetNum,90,30,0x69f203,100); } とかいてあります。 これで円を描画してくれるんですが、 さらにもう一つの円を重ねて表示させたいので FLASHのフレーム内に import DrawArc; mc = new DrawArc(this); mc2 = new DrawArc(this);//新しい用 targetNum = 0; targetNum2 = 0;//新しい用 onEnterFrame = function () { if (targetNum<=220) { targetNum += 2; change(); } if (targetNum2<=210) { targetNum2 += 2; change2(); } }; function change() { mc.drawLine(Stage.width/2,65,40,-targetNum,90,30,0x002503,100); mc.mc.swapDepths(10); trace(mc.mc.getDepth()); } function change2() { mc2.drawLine(Stage.width/2,65,40,-targetNum2,90,30,0x69f203,100); mc2.mc.swapDepths(11); trace(mc2.mc.getDepth()); } と書いたのですがDepthが両方とも10になってしまいます。このDepthが別々になれば両方ちゃんと表示されると思うのですが、手詰まりになってしまいました。 どなたか解決策が分かる方教えてください。

    • ベストアンサー
    • Flash
  • 「関数ポインタとして評価されない式」?(sin波)

    知っている(ある程度のプログラミング知識がある)方にはばかばかしい内容かもしれませんが・・・。 sin波とcos波を描くものをC++でプログラミングしている途中です。 いざ実行!と思ってコンパイルすると、「関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。」と出たのですが、何が原因かわかりません。 プログラム内容↓ #include <stdio.h> #include <math.h> #define PAI 3.14 (中略・ペン設定など) double j=0.0, sinwave[400]; int x0=50, y0=50, i=0; while(i<400){   for(j=0.0; j<=PAI; j=j+0.1){ sinwave[i]=sin(j); ●ここが原因らしい   }   i++; } (後略・ペンdeleteなど) math.hもあるし、特に変なところはないと思います。 また、そのあとにMoveTo,LineToでsin波を描きたいのですが、 for文で繰り返し MoveTo(x0+sin[i],?) LineTo(x0+sin[i+1],?) の、はてなの部分に何を入れればよいかわかりません。(x0:勝手にきめた原点)x0+sin[i]も、これで良いのか「?」です・・・。 お願いします。

  • 三角関数のグラフが分かりません汗

    もうすぐテストが近いのですが、三角関数のグラフが分からなくて、困ってますd(d′Д`;) 特にわからなぃのが、y=sin(x-π/6)←6分のパイ と、y=cos(x-π/4)←4分のパイ です・・!グラフの書き方が分からないんです。 良かったら、教えてください!!

  • 絶対値記号のついた三角関数の微分

    問題:次の関数の導関数を求めよ。 y = |sin(x/2)| 自己見解:絶対値を外した式を考えます。 Y = sin(x/2) そのまま微分すると、 Y’= 1/2 cos(x/2) となります。元の関数yは、このグラフについて、 n < x < 2n+1 (n = 1, 2, 3, ...) の範囲でx軸を対称に折り返した形となります。なので、x-y’のグラフは、 Y’= 1/2 cos(x/2) において n < x < 2n+1 (n = 1, 2, 3, ...) の範囲だけx軸を中心にひっくり返したグラフ(∫を左右対称にしたような形)になると思うのですが、その後これを式で表すことができません。 この後の解法についてご教授願います。 (別の分かりやすい解法があればそちらでもかまいませんのでお教えください)